【发布时间】:2018-02-16 09:34:33
【问题描述】:
我想在 Python 中实现类似 sed 的搜索和替换。
现在很明显,Python 有 re 模块:
import re
re.sub("([A-Z]+)", r"\1-\1", "123 ABC 456")
但是,我想在单个字符串中指定搜索/替换操作,例如在 sed 中(暂时不考虑任何转义问题):
s/([A-Z]+)/\1-\1/g
我更喜欢这种语法的原因是因为实际的搜索和替换规范是由用户提供的,我认为用户指定单个搜索/替换字符串而不是同时指定一个 模式 和一个模板。
更新
我只对 sed 的 s(搜索/替换)命令感兴趣,用于单行(无特殊扩展名)。
用例实际上是允许用户为主机名提供字符串转换(带组)。
有什么想法吗?
【问题讨论】:
-
其他
sed命令呢?有很多。g选项呢?现在这太宽泛了(意味着:必须编写大量代码才能将 sed 表达式转换为搜索和替换 python 表达式)。你想走多远。重写sed.py?还是更简单? -
@Jean-FrançoisFabre 我更新/简化了问题