簡體   English   中英

如何將 UTF-8 表示法轉換為 python unicode 表示法

[英]How to convert UTF-8 notation to python unicode notation

使用 python3.8 我想將 unicode 表示法轉換為 python 表示法:

s = 'U+00A0'
result = s.lower() # output  'u+00a0'

我想用\\u\u003c/code>替換u+

result = s.lower().replace('u+','\u') 

但我得到了錯誤:

SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 0-1: truncated \uXXXX escape

如何將符號U+00A0轉換為

編輯:

我想獲得的原因是進一步使用encode方法來獲得b'\\xc2\\xa0'

我的問題:給定以下符號U+00A0的字符串,我想將其轉換為字節碼b'\\xc2\\xa0'

您正在為某物的表現與它的價值而苦苦掙扎……

import re
re.sub("u\+([0-9a-f]{4})",lambda m:chr(int(m.group(1),16)),s)

但對於 u+00a0 這變成 \\xa0

但與文字 \  相同

s = "\u00a0"
print(repr(s))

一旦您將正確的值作為 unicode 字符串,您就可以將其編碼為 utf8

s = "\xa0"
print(s.encode('utf8'))
# b'\xc2\xa0'

所以這里只是最后的答案

import re
s = "u+00a0"
s2 = re.sub("u\+([0-9a-f]{4})",lambda m:chr(int(m.group(1),16)),s)
s_bytes = s2.encode('utf8') # b'\xc2\xa0'

你也可以使用這個:

>>> s = 'U+00A0'
>>> s = s.replace('U+', '\\u').encode().decode('unicode_escape').encode()
>>> s
b'\xc2\xa0'

您需要轉義\\replace第二個\\

result = s.lower().replace('u+','\\u') 
print(result)

會給你

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM