我正在阅读一个文本文件(20 +行),并使用以下代码在文本的多个位置进行查找和替换。
with open(r"c:\TestFolder\test_file_with_State.txt","r+") as fp:
finds = 'MI'
pattern = re.compile(r'[,\s]+' + re.escape(finds) + r'[\s]+')
textdata = fp.read()
line = re.sub(pattern,'MICHIGAN',textdata)
fp.write(line)
当尝试将其写回同一文件时,我收到以下错误。
IOError Traceback (most recent call last)
<ipython-input> in <module>()
6 line = re.sub(pattern,'MICHIGAN',textdata)
7 print line
----> 8 fp.write(line)
9
我做错了什么。
答案 0 :(得分:1)
您已经阅读了该文件,因此您在文件的末尾无法将文字写入。
您可以使用fp.seek(0)
正则表达式正在使用周围的空格,因此您可以将其重新添加。
所以你的代码是:
with open(r"c:\TestFolder\test_file_with_State.txt","r+") as fp:
finds = 'MI'
pattern = re.compile(r'[,\s]+' + re.escape(finds) + r'[\s]+')
textdata = fp.read()
line = re.sub(pattern,' MICHIGAN ',textdata)
fp.seek(0)
fp.write(line)