[英]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.