搜索和替换是添加而不是替换

问题描述 投票:0回答:1

我试图在文件中找到这个字符串:

/home/pi/dew-heater/get-temp.py 

替换为

#/home/pi/dew-heater/get-temp.py

但有些情况下它已经读取了#/home/pi/dew-heater/get-temp.py。所以我的程序用双

##
替换它所以它看起来像这样:

##/home/pi/dew-heater/get-temp.py 

如何防止双重## ??

with open('/home/pi/dew-heater/getweather.sh', 'r') as fp:
    data = fp.read()
    typos = data.replace('/home/pi/dew-heater/get-temp.py', '#/home/pi/dew-heater/get-temp.py')
with open('/home/pi/dew-heater/getweather.sh', 'w') as fp:
    fp.write(typos)
python search replace
1个回答
0
投票

使用负向后视的正则表达式。

import re

with open('/home/pi/dew-heater/getweather.sh', 'r') as fp:
    data = fp.read()
    typos = re.sub(r'(?<!#)/home/pi/dew-heater/get-temp\.py', '#/home/pi/dew-heater/get-temp.py', data)

with open('/home/pi/dew-heater/getweather.sh', 'w') as fp:
    fp.write(typos)
© www.soinside.com 2019 - 2024. All rights reserved.