替换文件中的单词

2 投票
4 回答
2648 浏览
提问于 2025-04-15 19:11

我刚开始学习Python编程...

我有一个.txt文件....... 它的内容看起来是这样的:

0,Salary,14000

0,Bonus,5000

0,gift,6000

我想把每一行开头的'0'替换成'1'。请问我该怎么做呢?有没有人能帮我一下.... 并给我一些示例代码..

提前谢谢大家。
Nimmyliji

4 个回答

3
inFile = open("old.txt", "r")
outFile = open("new.txt", "w")
for line in inFile: 
    outFile.write(",".join(["1"] + (line.split(","))[1:]))

inFile.close()
outFile.close()

如果你想了解一些更通用的内容,可以看看Python的csv模块。这个模块提供了一些工具,可以处理文件中的逗号分隔值(简称csv)。不过,它不仅仅能处理逗号,还可以处理其他分隔符。所以,既然你的样本显然是一个csv文件,你可以这样使用它:

import csv
reader = csv.reader(open("old.txt"))
writer = csv.writer(open("new.txt", "w"))
writer.writerows(["1"] + line[1:] for line in reader)

要用新文件覆盖原来的文件:

import os
os.remove("old.txt")
os.rename("new.txt", "old.txt")

我觉得先写入一个新文件,然后再重命名这个新文件,比直接覆盖原文件要更安全,也不容易损坏你的数据。想象一下,如果你的程序在原文件已经被读取到内存并重新打开进行写入时发生了错误,那你就会丢失原始数据,而新数据也无法保存,因为程序崩溃了。在我的情况下,我只会丢失新数据,而原始数据仍然保留。

4

我知道你在问Python,但请原谅我建议用其他工具可能更合适。:) 这里有个很简单的一行命令,使用的是sed

sed 's/^0,/1,/' yourtextfile.txt > output.txt

这个命令会对每一行应用一个叫做正则表达式的东西/^0,/(它会找到每行开头的0,),然后把找到的内容替换成1,。最后的结果会保存到指定的文件output.txt里。

2
o=open("output.txt","w")
for line in open("file"):
    s=line.split(",")
    s[0]="1"
    o.write(','.join(s))
o.close()
import fileinput
for line in fileinput.FileInput("file",inplace=1):
    s=line.split(",")
    s[0]="1"
    print ','.join(s)

或者你可以使用fileinput来进行就地编辑。

撰写回答