Python处理文本文件时如何仅替换变量名开头的$字符为N
解决方案
问题原因
你当前使用的str.replace()方法会无差别替换文本中所有出现的$字符,无法区分$是否处于变量名开头位置,因此不符合需求。
修正后代码
import re # 读取文件内容 with open('filename', 'r') as file: data = file.read() # 仅匹配替换变量名开头的$为N data = re.sub(r'(?<!\w)\$(?=\w)', 'N', data) # 写入修改后的内容 with open('filename', 'w') as file: file.write(data)
匹配规则说明
正则表达式(?<!\w)\$(?=\w)的匹配逻辑:
(?<!\w):负向回顾断言,要求$的前一个字符不能是单词字符(字母、数字、下划线)\$:匹配字面量$符号(?=\w):正向先行断言,要求$的后一个字符必须是单词字符
该规则只会匹配出现在变量名开头的$,不会修改其他位置出现的$,完全符合需求。
内容的提问来源于stack exchange,提问作者Aron Chabane
相关产品推荐
相关产品推荐

