如何替换一个字符覆盖原文件

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 正则表达式文档。

附带说明一下,覆盖原始文件的方式非常危险:如果你搞砸了某些东西,你将丢失原始文件中的所有内容。更好地输出到新文件中。