You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何避免对脚本行重复添加注释符号的搜索替换操作

精准注释指定行,避免重复添加#的解决方案

你的问题出在直接用字符串替换,不管目标内容是否已经被注释,导致重复添加#。要实现精准匹配,应该用正则表达式定位「未被注释的目标行」,只对这类行添加注释符号。

修改后的代码

import re

# 读取文件内容
with open('/home/pi/allsky/getweather.sh', 'r') as file:
    filedata = file.read()

# 正则精准替换:仅给未被注释的目标行添加#
filedata = re.sub(
    r'^(\s*)(?!#)/home/pi/allsky/get-temp.py',
    r'\1#/home/pi/allsky/get-temp.py',
    filedata,
    flags=re.MULTILINE
)

# 写入修改后的内容
with open('/home/pi/allsky/getweather.sh', 'w') as file:
    file.write(filedata)

代码说明

  • re.MULTILINE:让正则中的^匹配每一行的开头,而非整个文本的开头
  • ^(\s*):捕获行前的空白字符(空格、制表符),替换时保留原缩进格式
  • (?!#):负前瞻断言,确保当前行开头没有#(即未被注释),只有满足这个条件才会执行替换
  • 替换后的\1#/home/pi/...:保留捕获到的空白字符,再加上#和原路径,保证注释后的格式一致

这样无论运行多少次,都只会给未被注释的目标行添加一次#,不会出现重复注释的问题。

内容的提问来源于stack exchange,提问作者BobW

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 05:32:44