在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


肥皂起泡泡
浏览 206回答 2
2回答

呼啦一阵风

一旦完成了第一轮替换,就不再需要替换占位符。如果您从testdata每次迭代的原始值开始,您应该没问题。

炎炎设计

问题出在while算法上。对于每个额外的循环,您需要重新加载变量的原始内容(文件内容)。简而言之,您要查找一个字符串*color*,但不幸的是,该字符串已str.replace()被使用而不再存在。因此testdata已更改并且下一个循环重复不再相关。否则你必须解决算法。例如,在while循环开始时,创建一个临时变量:with open('carstest.txt', 'r') as file :&nbsp; &nbsp; testdata = file.read()colors = ['RED','GREEN','BLUE']car =['Ferrari', 'Mustang','Camero']Money = ['one','two','three']i = 0while i < len(colors):&nbsp; &nbsp; s = testdata&nbsp; &nbsp; s = s.replace('*color*' , colors[i])&nbsp; &nbsp; s = s.replace('*car*'&nbsp; &nbsp;, car[i])&nbsp; &nbsp; s = s.replace('*Money*' , Money[i])&nbsp; &nbsp; print(s)&nbsp; &nbsp; i += 1else:&nbsp; &nbsp; print ("DONE")
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python