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