社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

python将unicode代码值转换为字符串,不带“\u”

Allen • 3 年前 • 1108 次点击  

在下面的代码中,

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值所代表的字符。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/131777
 
1108 次点击  
文章 [ 2 ]  |  最新文章 3 年前
Namballa Mukesh
Reply   •   1 楼
Namballa Mukesh    4 年前

你可以这样做: 可以忽略非ASCII字符并编码为ASCII,也可以编码为UTF-8

text = "\u54c8\u54c8\u54c8\u54c8"
utf8string = text.encode("utf-8")
asciistring1 = text.encode("ascii", 'ignore')
asciistring2 = text.encode("ascii", 'replace')

你可以参考 https://www.oreilly.com/library/view/python-cookbook/0596001673/ch03s18.html

AKX
Reply   •   2 楼
AKX    4 年前

您可以使用常规的列表理解来映射中的4个字符 text ,并使用 ord 得到 奥德 码点的最后一个(整数),然后 hex() 将其转换为十六进制。这个 [2:] 需要切片来去除 0x 否则Python会添加。

>>> 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,5,4,c,8”重复4次,您需要首先解码反斜杠转义序列以获得4码点字符串:

>>> text = r"\u54c8\u54c8\u54c8\u54c8"
>>> codecs.decode(text, "unicode_escape")
'哈哈哈哈'