【问题标题】:Find and Replace a text file in python在python中查找和替换文本文件
【发布时间】:2019-07-30 18:31:18
【问题描述】:

下面是代码,但输出错误,它只在循环时输出第一个索引值。它在我打印 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

【问题讨论】:

  • 在循环中使用find,然后替换第一个实例
  • 你的缩进关闭了吗?使用您当前的格式,您甚至没有读取文件中的第二行我想with 将在停止从文件读取后关闭文件

标签: python replace find text-files


【解决方案1】:

问题出在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")

【讨论】:

    【解决方案2】:

    完成第一轮替换后,占位符不再需要替换。如果每次迭代都使用 testdata 的原始值开始,应该没问题。

    【讨论】:

    • 工作谢谢
    猜你喜欢
    • 2013-05-27
    • 2011-06-12
    • 2020-07-29
    • 2013-05-26
    • 2019-10-16
    • 1970-01-01
    • 2022-07-13
    • 2014-07-05
    • 2013-01-29
    相关资源
    最近更新 更多