python-3.x - 如何在 python 3 中解析这样的字符串以使用 `\\x` 转换字符串中已经存在的十六进制字符
问题描述
例子。
x = "\\x20Please\\x20try\\x20again\\x20later"
y = parse_string(x)
print(y)
## It should be converted to "Please try again later".
我试过 URLDecoder 的 unquote 方法。我试图编码(“utf-8”),但没有用。我正在考虑查找和替换,以防没有标准功能可用于处理这些问题。
解决方案
您必须首先将其转换回字节对象 - 为此您使用“charmap 编码”对其进行编码:即可以提供任何 0-256 代码点字符到字节的“往返”并再次返回的编码。“latin1”就是这样一种编码。
然后,使用特殊的“unicode 转义”字符编解码器将结果解码回文本 - 这会将“物理”\\
字符解析为转义码的一部分,就像在源代码中解析字符串时发生的情况一样。
对不起,如果这听起来很复杂 - 实际上它要简单得多:
In [40]: x = "\\x20Please\\x20try\\x20again\\x20later"
In [41]: y = x.encode("latin1").decode("unicode escape")
In [42]: print(y)
Please try again later
推荐阅读
- informatica - 如何在 Informatica Manager 中启用任务工具栏
- postgresql - 续集计数关联
- postgresql - postgresql,knex,将文本添加到字段
- security - iframe 与对象 - 安全建议 - 如何嵌入外部表单
- pivot-table - Power Pivot Row Heirarchys 在具有自己的维度的数据透视表中具有自己的总计
- matlab - 在 Matlab 中绘制一个大数据集
- python - Python - 如何定义另一个库源
- jenkins - 在 Spock 中自定义 XML 报告文件
- javascript - 为什么我的计数器在单击画布时不起作用?
- python - PyGame Y 轴碰撞检测