Python 是否有可用于转义字符串中特殊字符的函数?
例如, I'm "stuck" :\
应该变成 I\'m \"stuck\" :\\
。
原文由 Wolfy 发布,翻译遵循 CC BY-SA 4.0 许可协议
我很惊讶没有人提到通过 re.sub()
使用正则表达式:
import re
print re.sub(r'([\"])', r'\\\1', 'it\'s "this"') # it's \"this\"
print re.sub(r"([\'])", r'\\\1', 'it\'s "this"') # it\'s "this"
print re.sub(r'([\" \'])', r'\\\1', 'it\'s "this"') # it\'s\ \"this\"
需要注意的重要事项:
\
以及您要查找的字符。您将使用 \
来转义您的角色,因此您也需要转义 _它_。([\"])
,这样 替换 模式在它前面添加 \
时可以使用找到的字符。 (这就是 \1
所做的:使用第一个带括号的组的值。)r
前面的 r'([\"])'
表示它是一个 _原始字符串_。原始字符串使用不同的规则来转义反斜杠。要将 ([\"])
写成纯字符串,您需要将所有反斜杠加倍并编写 '([\\"])'
。当您编写正则表达式时,原始字符串更友好。\
以将其与替换组之前的反斜杠区分开来,例如 \1
,因此 r'\\\1'
要将其写 为 纯字符串,您需要 '\\\\\\1'
— 没有人想要它。原文由 Tim Ruddick 发布,翻译遵循 CC BY-SA 3.0 许可协议
2 回答5.2k 阅读✓ 已解决
2 回答1.1k 阅读✓ 已解决
4 回答1.4k 阅读✓ 已解决
3 回答1.3k 阅读✓ 已解决
3 回答1.3k 阅读✓ 已解决
2 回答895 阅读✓ 已解决
1 回答1.8k 阅读✓ 已解决
使用
re.escape
在这里重复:
从 Python 3.7
re.escape()
已更改为仅转义对正则表达式操作有意义的字符。