首页 > 解决方案 > 如何替换 for 循环中的行

问题描述

我正在编辑的文件

45940736:1330:0.266667:1602990684:10023084.555000
48545806:16000000:0.000000:9999999999:0.000000
1191125008:1185:37.408333:1602991293:10282893.310000
116776982:1811:0.637500:1602990076:10022476.137000

我的代码

f = open("values", "r+")
lines = f.readlines()

for i in lines:
    if str(IDS) in i:
        spl = i.split(":")
        asset_id = spl[0]
        value = spl[1]
        volume = spl[2]
        updated = spl[3]
        item_age = spl[4]
        new_line = asset_id + ":" + "this is a test" + ":"+ volume + ":" + updated + ":" + item_age
        old_line = i
        print(new_line) 

我将如何在 for 循环中替换该行而不是做

lines[0] = new_line
ff = open('values', 'w')
ff.writelines(lines)

我不能这样做,因为有些文件会有 2k 值,我需要更改所有这些值。

标签: pythonpython-3.xfile

解决方案


使用enumerate()所以你得到列表中的索引,所以你可以替换元素。

for index, i in enumerate(lines):
    if str(IDS) in i:
        spl = i.split(":")
        asset_id = spl[0]
        value = spl[1]
        volume = spl[2]
        updated = spl[3]
        item_age = spl[4]
        new_line = asset_id + ":" + "this is a test" + ":"+ volume + ":" + updated + ":" + item_age
        old_line = i
        lines[index] = new_line

推荐阅读