python - python中有没有办法替换字符串但保持中间字符完整?
问题描述
有没有办法替换文件中所有出现的字符串,同时在字符串中间保留未知字符?例如,将字符串 'ab{unknown}cde' 替换为 '(ab{unknown}cde)'
解决方案
这与其说是替换,不如说是用括号括起来匹配的子字符串。
>>> re.sub('(ab.cde)', r'(\1)', '123abxcde456')
'123(abxcde)456'
模式是正则表达式ab.cde
。模式中的括号表示整个匹配是一个捕获组。替换文本是一对括号,其中包含(第一个)组匹配的任何内容。
除了替换文本,您还可以指定一个接收正则表达式匹配结果的函数。如果没有别的,这可以让您避免在正则表达式中显式定义捕获组。
def surround(m):
return f'({m.group()})'
new_str = re.sub('ab.cde', surround, '123abxcde456')
assert new_str == '123(abxcde)456'
推荐阅读
- c - `__heap_base` seems to be missing in clang 9.0.0, is there a replacement?
- r - 根据数值数据类型为函数创建错误检查?
- javascript - Converting Firebase object(s) to an array
- php - CTE 查询需要永远加载
- python - Writing a function to compute a quantity in python based on a math problem
- c# - 当我希望它根据用户的响应逐步运行我的方法时,究竟是什么导致我的主要方法无限运行?
- javascript - Puppeteer - 按类名单击按钮?
- reactjs - 在 reactjs 中渲染表的数据头
- android - 尝试在空对象引用上调用虚拟方法 'void android.widget.TextView.setText(java.lang.CharSequence)
- ios - iOS:是否可以通过编程方式断开通话?