替换文件中的某些字符串

时间:2014-11-10 13:08:52

标签: python string file

我有一个文本文件,我需要用一些字符串替换它。我需要将它写入文件。 的问题 如何在文件中将替换后的字符串写入另一个文件/同一文件,而不更改缩进和间距?

我的代码:

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

请帮我完成我的代码!

2 个答案:

答案 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)