python - python将unicode代码值转换为字符串,不带'\u'
问题描述
在下面的代码中,
text = "\u54c8\u54c8\u54c8\u54c8"
有没有办法将上面的 unicode 代码转换为仅保留该值,并从中删除“\u”。于是"\u54c8"
就变成"54c8"
了。
在 javascript 中我可以做到text.charCodeAt(n).toString(16)
,但我无法在 python 中找出等效的解决方案。
我尝试使用正则表达式来匹配它,
pattern = re.compile('[\u0000-\uFFFF]')
matches = pattern.finditer(text)
for match in matches:
print(match)
但它所做的只是打印出 unicode 值所代表的字符。
解决方案
您可以使用常规列表推导来映射 4 个字符text
,并用于ord
获取代码点的ord
最终(整数),然后hex()
将其转换为十六进制。[2:]
切片是摆脱 Python 所必需的,否则0x
会添加。
>>> text = "\u54c8\u54c8\u54c8\u54c8"
>>> text
'哈哈哈哈'
>>> [hex(ord(c))[2:] for c in text]
['54c8', '54c8', '54c8', '54c8']
>>>
"".join()
然后,如果您需要单个字符串,您可以使用例如。
(另一种编写理解的方法是使用 f 字符串和x
十六进制格式:
>>> [f'{ord(c):x}' for c in text]
['54c8', '54c8', '54c8', '54c8']
)
如果您实际上有一个字符串\u54c8\u54c8\u54c8\u54c8
,即“反斜杠,u,五,四,c,八”重复4次,您需要首先解码反斜杠转义序列以获得4-codepoint字符串:
>>> text = r"\u54c8\u54c8\u54c8\u54c8"
>>> codecs.decode(text, "unicode_escape")
'哈哈哈哈'
推荐阅读
- spring - @Pattern 不适用于具有路径变量的控制器方法
- python - Leetcode 207. 课程安排 DFS 类似解决方案但不起作用,正在寻找错误检查
- node.js - 如何将图像或文件放入vue中的变量?
- stm32 - 如何在 STWIN 上的软件中进入引导加载程序(DFU 模式)
- java - java项目中使用JUnit 5的存储库依赖注入
- javascript - JavaScript 中的深度相等对象比较
- c# - 计算没有标点符号的小写句子中短语的出现次数
- docker - Quarkus 无法从 docker 内部连接到 kafka
- angular - Azure CDN(verizon 高级版)角度应用程序获取 404,URL 具有
- java - AdMob 插页式广告始终返回 null