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')
你可以参考