如何替换一个字符覆盖原文件
How to replace a character and overwrite the original file
我正在尝试用文件文本中的 _
更改 |
符号并覆盖结果。
我的文件的文本是这样的:
#Hello there|this is my text_to_modify
正如您所见,_
已经出现在文本的某些部分,但我只想更改 |
符号。
我写的代码是:
import re
with open(my_file,'r+') as f:
text = f.read()
text = re.sub('|', '_', text)
f.seek(0)
f.write(text)
f.truncate()
f.close()
输出为:
#Hello_there|this_is_my_text_to_modify
我能做什么?预先感谢您的回答。
您需要对管道符号进行转义:
text = re.sub('\|', '_', text)
|
在正则表达式 ('or') 中有特殊含义,必须转义才能按字面意思使用。我不明白你是怎么得到你报告的输出的,因为你的正则表达式 '|'
基本上是说 'match nothing or nothing and replace it with an underscore',所以你的输出应该在所有字符之间有下划线(其中 'nothing')。
我建议您仔细阅读优秀的 Python 正则表达式文档。
附带说明一下,覆盖原始文件的方式非常危险:如果你搞砸了某些东西,你将丢失原始文件中的所有内容。更好地输出到新文件中。
我正在尝试用文件文本中的 _
更改 |
符号并覆盖结果。
我的文件的文本是这样的:
#Hello there|this is my text_to_modify
正如您所见,_
已经出现在文本的某些部分,但我只想更改 |
符号。
我写的代码是:
import re
with open(my_file,'r+') as f:
text = f.read()
text = re.sub('|', '_', text)
f.seek(0)
f.write(text)
f.truncate()
f.close()
输出为:
#Hello_there|this_is_my_text_to_modify
我能做什么?预先感谢您的回答。
您需要对管道符号进行转义:
text = re.sub('\|', '_', text)
|
在正则表达式 ('or') 中有特殊含义,必须转义才能按字面意思使用。我不明白你是怎么得到你报告的输出的,因为你的正则表达式 '|'
基本上是说 'match nothing or nothing and replace it with an underscore',所以你的输出应该在所有字符之间有下划线(其中 'nothing')。
我建议您仔细阅读优秀的 Python 正则表达式文档。
附带说明一下,覆盖原始文件的方式非常危险:如果你搞砸了某些东西,你将丢失原始文件中的所有内容。更好地输出到新文件中。