Python替换文本文件中的值

时间:2016-07-31 07:25:33

标签: python search replace

我试图替换文本文件中特定行的值。

我的文本文件包含searchterm,searchterm&的计数。日期和时间

文字档案:

MemTotal,5,2016-07-30 12:02:33,781
model name,3,2016-07-30 13:37:59,074
model,3,2016-07-30 15:39:59,075

如何替换第2行(model name,3,2016-07-30 13:37:59,074)的searchterm计数?

这就是我已经拥有的:

f = open('file.log','r')
filedata = f.read()
f.close()

newdata = filedata.replace("2", "3")

f = open('file.log', 'w')
f.write(newdata)
f.close()

它会替换所有值2

2 个答案:

答案 0 :(得分:0)

您必须在代码中更改三件事才能完成工作:

  1. 使用readlines阅读文件。

    filedata = f.readlines()
    
  2. 修改要更改的行(请记住,Python索引从0开始,不要忘记在字符串末尾添加换行符\n):

    filedata[1] = 'new count,new search term,new date and time\n'
    
  3. 使用for循环保存文件:

    for line in filedata:
        f.write(line)
    
  4. 以下是完整代码(通知我使用with上下文管理器来打开/关闭文件):

    with open('file.log', 'r') as f:
        filedata = f.readlines()
    
    filedata[1] = 'new count,new search term,new date and time\n'
    
    with open('file.log', 'w') as f:
        for line in filedata:
            f.write(line)
    

答案 1 :(得分:0)

我的解决方案:

count = 0
line_number = 0
replace = ""
f = open('examen.log','r')
term = "MemTotal"
for line in f.read().split('\n'):
        if term in line:
                replace= line.replace("5", "25", 1)
                line_number = count
        count = count + 1
print line_number
f.close()
f = open('examen.log','r')
filedata = f.readlines()
f.close()

filedata[line_number]=replace+'\n'
print filedata[line_number]
print filedata
f = open('examen.log','w')
for line in filedata:
    f.write(line)
f.close()

您只需要定义searchterm&替换值