【发布时间】:2021-07-20 12:37:05
【问题描述】:
我在我们的项目(python3.6)中使用了 re.escape,当我们将 Python 版本升级到 3.7 时,我们遇到了关于字符串中特殊字符的问题。 例如 以下代码在 Python 3.6 和 3.7 中的工作方式不同。 请提出一些替代方案。
import re
re.escape("hey:there")
Python 3.6 输出
"hey\\:there"
Python 3.7 输出
"hey:there"
有哪些可用于 re.escape 的替代方案?或者,除了显式添加 \ 之外,我们如何处理这个问题。
【问题讨论】:
-
不知道为什么这是个问题。 3.9 的文档说“在 3.7 版中更改:只有在正则表达式中具有特殊含义的字符才会被转义。因此,'!'、'"'、'%'、"'"、','、'/ '、':'、';'、''、'@' 和 "`" 不再转义。” - 所以现在没有转义的字符不需要转义。@987654321 @ - 你能举一个 3.7+ 的行为给你带来问题的例子吗?
-
如果我们不传递相同的字符串而不转义,弹性搜索会抛出错误。我们正在为弹性搜索查询修改特殊字符
-
re.escape()仅用于转义re的特殊字符。看起来您将不得不编写自己的 elasticsearch_escape() 函数来转义 elasticsearch 使用的特殊字符。 -
这和
re.escape有什么关系?听起来您正在滥用re.escape错误,现在正在寻找替代方案,因为该错误已修复 -
这能回答你的问题吗? Escaping special characters in elasticsearch
标签: python regex python-3.6 python-3.7