2016-12-03 38 views
0

我有一個像下面的股票文件。如何替換文本文件中的值python

莫,男,15,

仁,男,14

我需要在這個文本文件,所以我的代碼來替換一個變量,如下面,找到我需要的行更改,然後將這些行值放入列表中。我嘗試使用替換,但它不起作用,出於某種原因,我的整個文件刪除。

我該如何將價值變化莫氏的年齡爲20?

我的代碼是像下面的東西:

newAge = "20" 

with open("file.txt") as f: 
    for line in f: 
     if "Mo" in line: 
      list = line.split() 
      replace = list.replace(list[2]""this is value of age 15"", newAge) 

任何幫助表示讚賞感謝。

+0

@AhsanulHaque:可以與同尺寸*(存儲文本)的另一個詞*號代替在文本文件中的一句話。如果我們可以假設所有年齡段都顯示爲兩個連續的小數位數,則可以更改年齡。這意味着沒有百歲老人和孩子需要像'09'這樣的年齡段,但這是可能的。這需要比OP顯示的更復雜。 –

+1

說你「沒有你的實際代碼」表明你需要等到你的代碼出現在你面前才問。 –

回答

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) 
     result += line + '\n' 
f = open("file.txt", 'w') # should be in 'wt or 'w' mode 
f.write(result) 
f.close() 
+0

這使得我的文件看起來像['M,o ,,,, M ,,,, 1,5 ,,']爲什麼是這樣的,我該如何解決它? –

+0

很抱歉,您必須將分隔線分隔爲',' –

1

您可以將結果保存在一個新的文件,如下所示:

new_age = '20' 

with open('new_file.txt', 'w') as new_file: 
    with open('file.txt', 'r') as f: 
     lines = f.readlines() 
     for line in lines: 
      if 'Mo' in line: 
       new_file.write(line.replace(line.split(',')[2], ' ' + new_age)) 
      else: 
       new_file.write(line) 

說明:

在舊文件中的每一行,如果再Mo存在,我們平分線並更換在新文件中有new_age的第3項,否則,我們只寫行而不更改。