如何将 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 替换 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 转换为 \u00a0

编辑:

我想得到\u00a0的原因是进一步使用encode方法得到b'\xc2\xa0'.

我的问题:给定一个字符串U+00A0我想把它转换成字节码b'\xc2\xa0'

您需要用第二个 \:

转义 replace 中的 \
result = s.lower().replace('u+','\u') 
print(result)

会给你\u00a0

您正在为某物的表示与其价值而苦苦挣扎...

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

但是对于 u+00a0 这变成了 \xa0

但与文字相同 \u00a0

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'