2016-08-11 26 views
0

私は奇妙な問題を抱えています。ファイル内の文字列を置換しようとしています。 ファイルの関連行がある:は、ファイル内の文字列をPythonを使用して置き換えます。

lattice parameter A [a.u.] 
    5.771452243459 

と私はそれを交換しようとしていますよう:

with open(newsys, "r+") as finp: 
     for line in finp: 
      # print(line) 
      if line.startswith("lattice parameter A [a.u.]"): 
       line = next(finp) 
       print(line) 
       print(Alat) 
       line.replace(line.strip(), str(Alat)) 
       print(line) 

最後の3 print文は与えられる:

5.771452243459 # string that will be replaced 

6.63717007997785 #value of Alat 
    5.771452243459 #the line after replace statement 

を間違って起こっていますここに?

答えて

1

replaceメソッドは、既存の文字列を変更しません。代わりに、新しいものを作成しています。だから、ライン

line.replace(line.strip(), str(Alat)) 

にあなたは完全に新しい文字列を作成し、(任意の変数に割り当てていないので)、それを破棄しています。

私のようなものだろう:

with open(newsys, "r+") as finp: 
     with open('newfile', 'w') as fout: 
      for line in finp: 
       # print(line) 
       if line.startswith("lattice parameter A [a.u.]"): 
        line = next(finp) 
        print(line) 
        print(Alat) 
        line = line.replace(line.strip(), str(Alat)) 
        print(line) 
       fout.write(line) 
関連する問題