首页 > 解决方案 > 尝试更新文本文件记录并将它们写入输出文件

问题描述

我读取了一个输入文件,并尝试通过将日期中的一位数“日”值替换为两位数“日”值来重新格式化未完全形成的日期字段。起初似乎运行良好,然后我注意到输入文件有(279)条记录,但输出是用(615)条记录写入的。许多(如果不是全部)个位数的日期值已按预期替换,但这些记录的原始版本似乎也已写入输出。当然期望输出也有(239)条记录???(脚本运行没有抛出任何错误)。

replacements = {'/1':'/01', '9/':'09/', '7/':'07/'}
file2 = open(r"c:\users\liddvdp\desktop\IBC CAP OUT.txt", "w")
with open(r"c:\users\liddvdp\desktop\IBC CAP.txt", "r") as reader:
         for line in reader:
             for src, target in replacements.items():
                 line = line.replace(src, target)
                 file2.write(line)

标签: pythonfiletext

解决方案


你应该写:

replacements = {'/1':'/01', '9/':'09/', '7/':'07/'}
file2 = open(r"c:\users\liddvdp\desktop\IBC CAP OUT.txt", "w")
with open(r"c:\users\liddvdp\desktop\IBC CAP.txt", "r") as reader:
    for line in reader:
        for src, target in replacements.items():
            line = line.replace(src, target)
        file2.write(line)

否则,您将每行编辑三次,并在输出文件中写入三次。


推荐阅读