gpt4 book ai didi

python - 逆转 Python 的 re.escape

转载 作者:太空宇宙 更新时间:2023-11-03 11:20:33 25 4
gpt4 key购买 nike

如何反向re.escape? This blog from 2007说没有反向功能,但十年后仍然如此吗?

Python 2 的 decode('string_escape') 不适用于所有转义字符(例如空格)。

>>> re.escape(' ')
'\\ '
>>> re.escape(' ').decode('string-escape')
'\\ '

python 3:Some suggest unicode_escapecodec.escape_decodeast.literal_eval 但没有空格。

>>> re.escape(b' ')
b'\\ '
>>> re.escape(b' ').decode('unicode_escape')
'\\ '
>>> codecs.escape_decode(re.escape(b' '))
(b'\\ ', 2)
>>> ast.literal_eval(re.escape(b' '))
ValueError: malformed node or string: b'\\ '

那么这真的是唯一有效的方法吗?

>>> re.sub(r'\\(.)', r'\1', re.escape(' '))
' '

最佳答案

So is this really the only thing that works?

>>> re.sub(r'\\(.)', r'\1', re.escape(' '))
' '

是的。 source因为 re 模块不包含 unescape() 函数,因此您肯定必须自己编写一个。

此外,re.escape()函数使用 str.translate() ……

def escape(pattern):
"""
Escape special characters in a string.
"""
if isinstance(pattern, str):
return pattern.translate(_special_chars_map)
else:
pattern = str(pattern, 'latin1')
return pattern.translate(_special_chars_map).encode('latin1')

… 虽然它可以将单个字符转换为多个字符(例如 [\[),但不能执行该操作的反向操作。

由于无法通过 str.translate() 直接反转 escape(),自定义 unescape() 函数使用 re.sub(),如您的问题中所述,是最直接的解决方案。

关于python - 逆转 Python 的 re.escape,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43662474/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com