- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
如何反向re.escape? This blog from 2007说没有反向功能,但十年后仍然如此吗?
Python 2 的 decode('string_escape')
不适用于所有转义字符(例如空格)。
>>> re.escape(' ')
'\\ '
>>> re.escape(' ').decode('string-escape')
'\\ '
python 3:Some suggest unicode_escape
或 codec.escape_decode
或 ast.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/
我构建了一个网页,用户可以在其中提交 PDF,然后将其插入到 mediumblob 中的 MySQL 数据库中以供以后检索。 一切正常,除非 PDF 包含图像或嵌入字体,在这种情况下,图像会损坏并且使
我正在开发一个应用程序,用户可以在其中创建 HTML 模板并将其保存到数据库中。模板由不同的组件组成,如文本、图像等。当我尝试使用撇号 ' 它给了我 mysql_error (显然)。所以我尝试 my
我制作了一个应用程序,可以通过低功耗蓝牙与设备通信。基本上,我的应用程序和这个设备都有自己的消息语法。它们以字节形式交换数据,并且这些数据中的每个值都是相反的。 我的问题是,在反转值后,当我将 3 字
我有一个嵌套列表,我想在用户将鼠标悬停在父列表项上时显示它。我是从左边移动的列表,当它处于下拉列表的位置时。我能够做到这一点,但是当用户取消悬停时,我想在它向左移动之前反向下拉,但我所做的一切都会导致
Android 电子市场应用程序的源代码不可用。我想做的是反转市场使用的网络协议(protocol)。目的是构建一个可以模拟手机并搜索特定短语的工具,从而返回目标应用程序的排名(或者可能是该特定关键字
如何反向re.escape? This blog from 2007说没有反向功能,但十年后仍然如此吗? Python 2 的 decode('string_escape') 不适用于所有转义字符(例
我是一名优秀的程序员,十分优秀!