繁体   English   中英

在python中查找和替换文本文件

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM