2016-12-08 25 views
0

は、私のようなテキストファイルを持っている以下のテキストファイルの形式を整える方法は?

のMo、M、15、

ジェン、Fは、14

私のコードは、以下の「モー・

newAge = "20" 
result = "" 
with open("file.txt") as f: 
for line in f: 
    if line.lower().startswith("mo,"): 
     list = line.split() 
     list[2] = str(newAge) 
     line = ", ".join(list) 
    result += line + '\n' 
f = open("file.txt", 'w') 
f.write(result) 
f.close() 
年齢を置き換え

その後のファイルの表示方法

[ ',, M ,, O ,, M ,, 2、、0 ,,'、]

私が見えるように、それをフォーマットする方法:

のMo、M 、20、

+1

分割する文字列を指定することができます。つまり、リスト= line.split( '、') – azalea

答えて

0

あなたは代わりに、これを試みることができる:あなたが最後の要素の末尾にスペースに関する特定のなら

newAge = "20" 
result = "" 
with open("file.txt") as f: 
    for line in f: 
     if line.lower().startswith("mo,"): 
      list = line.split() 
      list[2] = newAge 
      line = '' 
      for element in list: 
       line += str(element) 
       line += ', ' 
     result += line + '\n' 
with open('file.txt', 'w') as inf: 
    inf.write(result) 

は、あなたも行うことができます:

newAge = "20" 
result = "" 
with open("file.txt") as f: 
    for line in f: 
     if line.lower().startswith("mo,"): 
      list = line.split() 
      list[2] = newAge 
      line = '' 
      for index, element in enumerate(list): 
       line += str(element) 
       if not index is len(list) -1: 
        line += ', ' 
       else: 
        line += ',' 
     result += line + '\n' 
with open('file.txt', 'w') as inf: 
    inf.write(result) 
1

csvモジュールは、ファイルの読み取りと書き込みの両方に使用します。以下は、テストされた例です。

newAge = ' 20' 
result = [] 
with open('file.txt','rb') as fin, open('file_out.txt','wb') as fou: 
    cr = csv.reader(fin) 
    cw = csv.writer(fou) 
    for line in cr: 
     if line[0].lower() == "mo": 
      line[2] = newAge 
     cw.writerow(line) 
+0

'csv'モジュールは、特に大きなデータダンプを持つ人生の節約者です(少なくとも私の経験から) – Chinny84

+0

@ Chinny84 – bernie

0

@azaleaのように、.split( '、')を使用してください。また、既存の文字列には既に新しい行が含まれているため、作成する文字列にのみ改行文字を使用してください。

newAge = "20" 
result = "" 
with open("file.txt") as f: 
    for line in f: 
     if line.lower().startswith("mo"): 
      list = line.split(', ') 
      list[2] = str(newAge) 
      line = ", ".join(list) + '\n' 
     result += line 
f = open("file2.txt", 'w') 
f.write(result) 
f.close() 
0

あなたが分割しますスペースで行を...あなたはスペースでそれに参加する必要があります!

newAge = "20" 
result = "" 
with open("file.txt") as f: 
    for line in f: 
     if line.lower().startswith("mo,"): 
      list = line.split() 
      list[2] = str(newAge) 
      line = " ".join(list)+"\n" 
     result += line 
f = open("file.txt", 'w') 
f.write(result) 
f.close() 
0

私はそれを簡単に保つことをお勧めします。文字列モジュールを使用するだけです。 この方法で使用できます。

import string 

toFind = '15' 
newAge = '20' 
with open('file.txt','r') as f: 
    text = f.readlines() 
    text[0] = string.replace(text[0],toFind,newAge) 
with open('file.txt','w') as f: 
    for item in text: 
     f.write(item) 

この情報が役立ちますようお願いいたします。

関連する問題