[英]Find and Replace a text file in python
下面是代码,但是输出是错误的,它在循环时仅输出第一个索引值。 当我打印col,rac和mon的值时,它起作用。 我还检查了i值,以确保它们以正确的方式递增。
文本文件:
Fav Color -- *color*
Fav Car -- *car*
Number -- *Money*
码:
with open('carstest.txt', 'r') as file :
testdata = file.read()
colors = ["RED","GREEN","BLUE"]
car =['Ferrari', 'Mustang','Camero']
Money = ['one','two','three']
i =0
while i <len(colors):
col = colors[i]
rac = car[i]
mon = Money[i]
testdata = testdata.replace('*color*', col)
testdata = testdata.replace('*car*', rac)
testdata = testdata.replace('*Money*', mon)
print(testdata)
i+=1
else:
print ("DONE")
输出:
Fav Color -- RED
Fav Car -- Ferrari
Number -- one
Fav Color -- RED
Fav Car -- Ferrari
Number -- one
Fav Color -- RED
Fav Car -- Ferrari
Number -- one
DONE
所需产量:
Fav Color -- RED
Fav Car -- Ferrari
Number -- one
Fav Color -- GREEN
Fav Car -- Mustang
Number -- two
Fav Color -- BLUE
Fav Car -- Camero
Number -- three
DONE
完成第一轮替换后,不再需要替换占位符。 如果您在每次迭代中使用testdata
的原始值启动,则应该没问题。
问题出在while
算法中。 对于每个其他循环,您需要重新加载变量的原始内容(文件内容)。 简单来说,您将寻找一个字符串*color*
,但是不幸的是,由于使用了str.replace()
,该字符串不再存在。 该testdata
因此已发生变化,下一个周期重复不再相关。 否则,您必须解决算法。 例如,在while
周期开始while
,创建一个临时变量:
with open('carstest.txt', 'r') as file :
testdata = file.read()
colors = ['RED','GREEN','BLUE']
car =['Ferrari', 'Mustang','Camero']
Money = ['one','two','three']
i = 0
while i < len(colors):
s = testdata
s = s.replace('*color*' , colors[i])
s = s.replace('*car*' , car[i])
s = s.replace('*Money*' , Money[i])
print(s)
i += 1
else:
print ("DONE")
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.