2016-12-03 75 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项,否则,我们只写行而不更改。