python - 如何在 python 中将 %uXXXX 代码转换为纯文本?
问题描述
我有像 '%u0E1E%u0E1A%u0E40%u0E08%u0E2D%u0E02%u0E27%u0E14%u0E40' 这样的字符串,我想将其转换为纯文本 'พบเจอ' 我尝试使用函数 ord() 和 chr() 作为 follwos
chr(ord(u'\u0E1E'))
这将给出palin文本。
split_list = encoded_string.split('%')
for i in range(1,len(split_list)):
split_list[i]= '\\'+split_list[i]
split_list
['', '\\u0E1E', '\\u0E1A', '\\u0E40', '\\u0E08', '\\u0E2D', '\\u0E02', '\\u0E27', '\\u0E14',.....]
现在,当我使用以下循环将其转换为纯文本时
for i in range(1,len(split_list)):
split_list[i] = chr(ord(u''+split_list[i]))
收到以下错误
TypeError Traceback (most recent call last)
<ipython-input-104-5ab6fb196276> in <module>
1 for i in range(1,len(split_list)):
----> 2 split_list[i] = chr(ord(u''+split_list[i]))
TypeError: ord() expected a character, but string of length 6 found
请帮我解决这个问题提前谢谢。
解决方案
似乎您有一个字符串,其中通常用于表示非 ascii 字符的反斜杠表示已被基于百分号的约定替换。
解决方案是用反斜杠替换百分号 - 正如您所尝试的那样 - 然后编码为字节并从unicode-escape编解码器解码。结果将是一个 Python str
。
>>> s = '%u0E1E%u0E1A%u0E40%u0E08%u0E2D%u0E02%u0E27%u0E14%u0E40'
>>> # Encode to latin-1 as it won't lose any information.
>>> result = s.replace('%', '\\').encode('latin-1').decode('unicode-escape')
>>> result
'พบเจอขวดเ'
>>> # Result is longer than we expected
>>> expected = 'พบเจอ'
>>> result == expected
False
>>> expected in result
True
>>> result.startswith(expected)
True
推荐阅读
- reactjs - 将多个引用从子组件传递给父组件
- python - 使用 argparse 允许未知参数
- angular - 传递原始类型作为参考
- xml - XML 模式 - 没有可用于验证根的匹配全局声明
- c# - 从 c# WPF 代码自动登录到 WEB 浏览器
- azure-devops - Azure Pipeline Function App - 部署单个 DLL 而不是完整的应用程序
- postgresql - Postgres 条件聚合数组
- twitter-bootstrap - Bootstrap 下拉菜单扩展了固定顶部导航栏的高度
- python-3.x - 如何在for循环中使用if条件?金贾
- jquery - JQuery .html() 没有正确返回自闭合标签