搜索单词,并使用fileinpu替换Python文件中包含该单词的整行

2024-10-01 09:23:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我想在文本文件中搜索特定的单词。对于每一行,其中的单词,我想完全改变一个新的文本行。在

我想使用python的fileinput模块来实现这一点。有两个观察结果,我看到以下变化:

代码段1:-

text = "mov9 = "   # if any line contains this text, I want to modify the whole line.
new_text = "mov9 = Alice in Wonderland"
x = fileinput.input(files="C:\Users\Admin\Desktop\DeletedMovies.txt", inplace=1)
for line in x:
    if text in line:
        line = new_text
        print line,
x.close()

上面的代码清除了文件的所有内容,并写入new_text,即文件内容仅

mov9 = Alice in Wonderland

代码段2:-

^{pr2}$

上面的代码段,即使添加了所需的行,即new_text,其中text,但没有删除该行,而是保留了之前的数据。在

也就是说,如果电话是早一点的话:-

mov9 = Fast & Furios

运行上述代码后,它将变为:-

mov9 = Alice in WonderlandFast & Furios

文件的其他内容保持不变,不像代码段1中的代码那样被删除。在

但是我的目标是找到单词mov9 =,无论它是什么,我都想把整行替换成mov9 = Alice in Wonderland。在

我怎么才能做到呢?提前谢谢。。。。在


Tags: 文件代码textin内容newif代码段
3条回答

我意识到我错了。在问题中提到的代码段1中,如果我把“打印线”从if的范围中带出来,也就是说,如果我升级了它,那么这个问题就解决了。。。在

由于这一行在if的范围内,因此只有这一行被写入到文件中,而其他行没有被写入,因此文件只剩下{}。因此,代码段应如下所示:

text = "mov9 = "   # if any line contains this text, I want to modify the whole line.
new_text = "mov9 = Alice in Wonderland"
x = fileinput.input(files="C:\Users\Admin\Desktop\DeletedMovies.txt", inplace=1)
for line in x:
    if text in line:
        line = new_text
    print line,
x.close()

而且,Rolf of Saxony给出的第二个解和{a2}给出的第一个解在某种程度上是相似的。在

正如Vysond所建议的那样:

import re
yourTxt = ''.join(open('file.txt').readlines())
yourTxt = re.sub(r'\bmov9\b', r'mov9 = Alice in Wonderland', yourTxt)

#Save the new text on disk
f = open('newTxt.txt', 'w')
f.write(yourTxt)
f.close()

我建议同时使用两个文件来替换文本,并将替换的数据写入另一个文件,然后简单地删除旧文件。在

path="Hello.txt"
path2="Hello2.txt"
file1_open=open(path,"r") 
file2_open=open(path2,"w")
for line in file1_open:
if "a" in line:
print "found"
    line=line.replace('a',"replaced")
print line
    file2_open.write(line)

现在您可以在内部删除打开的文件。 它很小很简单,但是在处理大文件时可能会占用CPU的负载。在

相关问题 更多 >