我有一个文本文件,我需要用一些字符串替换它。我需要将它写入文件。 的问题 如何在文件中将替换后的字符串写入另一个文件/同一文件,而不更改缩进和间距?
我的代码:
a='hi'
b='hello'
with open('out2','r') as f:
if 'HI' in f:
m = re.sub(r'HI', a)
if 'HELLO' in f:
m = re.sub(r'HELLO', b)
out2.close()
请帮我完成我的代码!
答案 0 :(得分:0)
要将文件读/写到同一文件,您需要使用r+
模式打开文件。
字符串替换应该针对字符串而不是文件来完成。读取文件内容并替换字符串,然后将替换后的字符串写回。
with open('out2', 'r+') as f:
content = f.read()
content = re.sub('HI', 'hi', content)
content = re.sub('HELLO', 'hello', content)
f.seek(0) # Reset file position to the beginning of the file
f.write(content)
f.truncate() # <---- If the replacement string is shorter than the original one,
# You need this. Otherwise, there will be remaining of
# content before the replacement.
顺便说一下,对于给定的字符串,您不需要使用正则表达式。 str.replace
就足够了。
content = content.replace('Hi', 'hi')
content = content.replace('HELLO', 'hello')
答案 1 :(得分:0)
此处不需要Regex
。你可以简单地这样做:
with open('out2','r') as f:
with open('outFile','w') as fp:
for line in f:
line=line.replace('HI','hi')
line=line.replace('HELLO','hello')
fp.write(line)