如何替换以特定字符串开头的文件中的列表中的第4项?

时间:2017-07-23 17:15:31

标签: python-3.x file replace

我需要在文件中搜索名称,并在以该名称开头的行中搜索,我需要替换列表中与逗号分隔的第四个项目。我已经开始尝试使用以下代码对此进行编程,但我还没有让它工作。

with open("SampleFile.txt", "r") as f:
  newline=[]
  for word in f.line(): 
      newline.append(word.replace(str(String1), str(String2)))
with open("SampleFile.txt", "w") as f:
  for line in newline :
      f.writelines(line)

  #this piece of code replaced every occurence of String1 with String 2

f = open("SampleFile.txt", "r")
for line in f:
    if line.startswith(Name):
        if line.contains(String1):
            newline = line.replace(str(String1), str(String2))

  #this came up with a syntax error

1 个答案:

答案 0 :(得分:0)

您可以提供一些虚拟数据,以帮助人们回答您的问题。我想您要备份数据:您可以将编辑后的数据保存到新文件中,也可以在处理数据之前将旧文件备份到备份文件夹(考虑使用"来自shutil import copyfile"和然后" copyfile(src,dst)")。否则,如果出错,您很容易破坏数据而无法轻松恢复数据。

你不能用" newline = line.replace(str(String1),str(String2))"!替换字符串。想想"强大"作为你的搜索词和像#Armstrong,Paul,strong,44" - 如果你更换" strong"用"弱"你会得到" Armweak,保罗,弱,44"。

我希望以下代码可以帮助您:

filename     = "SampleFile.txt"
filename_new = filename.replace(".", "_new.")

search_term = "Smith"

with open(filename) as src, open(filename_new, 'w') as dst:

    for line in src:

        if line.startswith(search_term):

            items = line.split(",")
            items[4-1] = items[4-1].replace("old", "new")

            line = ",".join(items)

        dst.write(line)

如果你使用csv文件,你应该看一下csv module

PS我的文件包含以下数据(文件名不在文件中!!!):

SampleFile.txt           SampleFile_new.txt

Adams,George,m,old,34    Adams,George,m,old,34
Adams,Tracy,f,old,32     Adams,Tracy,f,old,32
Smith,John,m,old,53      Smith,John,m,new,53
Man,Emily,w,old,44       Man,Emily,w,old,44