首页 > 解决方案 > 如何在 Python 中替换文件中的特定数字?

问题描述

我在 python 中遇到问题...我想替换文件中的数字,但我不知道如何。例如,我在文件中有这些数字:

3
5
76
35
9

在我尝试用 12 替换 5 之后,我将拥有这个文件

3
12
76
312
9

但我想让每一行都作为一个分隔号,正确的文件应该是这样的

3
12
76
35
9

不幸的是,我没有计划如何做到这一点。有人有想法吗?这是我的代码:

def Wert_aendern():
   d = open("Datei.dat",'r')

   filedata = d.read()
   d.splitlines()
   d.close()
   a = input('Geben Sie bitte die zu ändernde Zahl ein')
   b = input('Geben Sie bitte die neue Zahl ein')
   newdata = filedata.replace(a, b)

   d = open("Datei.dat",'w')
   d.write(newdata)
   d.close()

标签: pythonreplace

解决方案


如果您的示例所建议的输入文件中每行只有一个数字,您可以简单地将整行(去除尾随换行符后)与正在搜索的数字匹配,并输出替换字符串而不是原始行如果他们匹配。

另请注意,最好不要直接写回输入文件,而是写入临时文件,然后将其重命名为输入文件,以尽量减少由于中断而在回写过程中丢失数据的机会:

import os

with open('Datei.dat') as file, open('output.tmp', 'w') as output:
    a = input('Geben Sie bitte die zu ändernde Zahl ein')
    b = input('Geben Sie bitte die neue Zahl ein')
    for line in file:
        output.write(b + '\n' if line.rstrip('\n') == a else line)
os.rename('output.tmp', 'Datei.dat')

推荐阅读