Python:这段代码在替换我的文件内容时有没有办法写入我的文件?

Python:这段代码在替换我的文件内容时有没有办法写入我的文件?,python,io,Python,Io,我有一个类似这样的输入文件: blah blah blah blah ;blah blah blah blah ;blah blah blah blah blah blah blah blah blah blah 我的程序所做的是在看到分号时分割行,然后转到下一行,这是我希望它做的(我希望它忽略分号位),产生如下结果: blah blah blah blah ;blah blah blah blah ;blah blah blah blah blah blah blah blah bl

我有一个类似这样的输入文件:

blah blah
blah blah ;blah blah
blah blah ;blah blah
blah 
blah blah
blah blah
blah blah
blah
我的程序所做的是在看到分号时分割行,然后转到下一行,这是我希望它做的(我希望它忽略分号位),产生如下结果:

blah blah
blah blah ;blah blah
blah blah ;blah blah
blah 
blah blah
blah blah
blah blah
blah
但是,当它写入文件时,它会将新代码附加到旧代码中,我只想在文件中包含新代码。有什么办法可以做到这一点吗?多谢各位

f = open ('testLC31.txt', 'r+')
def after_semi(f):
    for line in f:
        yield line.split(';')[0]       


for line in after_semi(f):
    f.write('!\n' + line)  

f.close()

当您打开文件时,
r+
命令Python追加到文件中。听起来你想覆盖这个文件。
w+
标志将为您执行此操作,请参阅

模式“r+”、“w+”和“a+”打开文件进行更新(读写);请注意,“w+”会截断文件

我建议将
一起使用,以确保文件始终处于关闭状态,这将为您指明正确的方向:

with open ('testLC31.txt', 'w+') as fout:
    for line in after_semi(f):
        fout.write('!\n' + line) 

希望有帮助

我会使用
re.sub
如下所示

import re
f = open('file', 'r')                 # Opens the file for reading
fil = f.read()                        # Read the entire data and store it in a variabl.
f.close()                             # Close the corresponding file
w = open('file', 'w')                 # Opens the file for wrting
w.write(re.sub(r';.*', r'', fil))     # Replaces all the chars from `;` upto the last with empty string.
w.close()

谢谢,我试过了,但它只给了我一个空文件哦,等等,
w+
标志会截断您打开的文件,因此如果您正在写入从
testLC31.txt
文件读取的同一个文件,则不会包含
废话;废话
text。我误解了这一点。删除
前面的空格,使用
r'\s*;*”正则表达式。