python将unicode代码值转换为字符串,不带'\u';
在下面的代码中python将unicode代码值转换为字符串,不带'\u';,python,Python,在下面的代码中 text = "\u54c8\u54c8\u54c8\u54c8" 是否有方法将上面的unicode代码转换为仅保留值,并从中删除“\u”。 因此,“\u54c8”变为“54c8” 在javascript中,我可以执行text.charCodeAt(n).toString(16),但在python中我无法找到等效的解决方案 我试着用正则表达式来匹配它 pattern = re.compile('[\u0000-\uFFFF]') matches = pat
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个字符,并使用ord
获取码点的ord
最后(整数),然后hex()
将其转换为十六进制。需要使用[2://code>切片来除去Python可能添加的0x
>>> text = "\u54c8\u54c8\u54c8\u54c8"
>>> text
'哈哈哈哈'
>>> [hex(ord(c))[2:] for c in text]
['54c8', '54c8', '54c8', '54c8']
>>>
如果需要单个字符串,则可以使用例如“”.join()
(编写理解的另一种方法是使用f字符串和x
hex格式:
>>> [f'{ord(c):x}' for c in text]
['54c8', '54c8', '54c8', '54c8']
)
如果实际有一个字符串\u54c8\u54c8\u54c8\u54c8\u54c8
,即“反斜杠、u、五、四、c、八”重复4次,则需要首先解码反斜杠转义序列以获得4码点字符串:
>>> text = r"\u54c8\u54c8\u54c8\u54c8"
>>> codecs.decode(text, "unicode_escape")
'哈哈哈哈'
您可以这样做:
您可以忽略非ASCII字符并编码为ASCII,也可以编码为UTF-8
text = "\u54c8\u54c8\u54c8\u54c8"
utf8string = text.encode("utf-8")
asciistring1 = text.encode("ascii", 'ignore')
asciistring2 = text.encode("ascii", 'replace')
你可以参考