为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

肥皂起泡泡 2021-11-30 16:59:57
下面是代码,但输出是错误的,它只在循环时输出第一个索引值。当我打印 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 =0while 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+=1else:    print ("DONE")输出:Fav Color   -- RED Fav Car     -- FerrariNumber  -- oneFav Color   -- RED Fav Car     -- FerrariNumber  -- oneFav Color   -- RED Fav Car     -- FerrariNumber  -- oneDONE期望输出:Fav Color   -- RED Fav Car     -- FerrariNumber  -- oneFav Color   -- GREENFav Car     -- MustangNumber  -- twoFav Color   -- BLUEFav Car     -- CameroNumber  -- threeDONE
查看完整描述

2 回答

?
呼啦一阵风

TA贡献1802条经验 获得超6个赞

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


查看完整回答
反对 回复 2021-11-30
?
炎炎设计

TA贡献1808条经验 获得超4个赞

问题出在while算法上。对于每个额外的循环,您需要重新加载变量的原始内容(文件内容)。简而言之,您要查找一个字符串*color*,但不幸的是,该字符串已str.replace()被使用而不再存在。因此testdata已更改并且下一个循环重复不再相关。否则你必须解决算法。例如,在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")


查看完整回答
反对 回复 2021-11-30
  • 2 回答
  • 0 关注
  • 205 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信