繁体   English   中英

替换文件中的单词

[英]Replace a word in a file

我是Python编程新手......

我有一个.txt文件.......看起来像......

0,工资,14000

0,奖金,5000

0,礼品,6000

我想在每一行中将第一个'0'值替换为'1'。 我怎样才能做到这一点? 任何人都可以帮助我....使用示例代码..

提前致谢。 Nimmyliji

我知道你在问Python,但请原谅我建议可能有一个不同的工具更适合这项工作。 :)这是一个单行通过sed

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

这会将regex /^0,/ (它匹配任何0,发生在行的开头)应用于每一行1,而是将匹配的文本替换为1, 输出定向到指定的文件output.txt。

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")

我认为写入新文件然后重命名它比更直接覆盖源文件更容错,更不可能破坏你的数据。 想象一下,您的程序引发了异常,而源文件已经读取到内存并重新打开以进行写入。 因此,您将丢失原始数据,并且由于程序崩溃,您的新数据将无法保存。 在我的情况下,我只保留原始的新数据。

f = open(filepath,'r')
data = f.readlines()
f.close()

edited = []
for line in data:
    edited.append( '1'+line[1:] )

f = open(filepath,'w')
f.writelines(edited)
f.flush()
f.close()

或者在Python 2.5+中:

with open(filepath,'r') as f:
   data = f.readlines()

with open(outfilepath, 'w') as f:
   for line in data:
      f.write( '1' + line[1:] )

这应该做到这一点。 我不推荐它用于真正的大文件;-)发生了什么(例如1):

1:以读取模式打开文件

2,3:将所有行读入列表(每行是一个单独的索引)并关闭文件。

4,5,6:遍历列表构造一个新列表,其中每一行都将第一个字符替换为1.行[1:]从索引1向前切割字符串。 我们将1与截断列表连接起来。

7,8,9:以写入模式重新打开文件,将列表写入文件(覆盖),刷新缓冲区,然后关闭文件句柄。

在前。 2:

我使用with语句让文件处理自己关闭,但基本上做同样的事情。

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

或者您可以使用fileinput进行就地编辑

import fileinput
for line in fileinput.FileInput("file",inplace=1):
    s=line.split(",")
    s[0]="1"
    print ','.join(s)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM