有没有一种更简单的方法可以将0xff01更改为\\ uff01?

it_*_*ure 0 python unicode python-3.x

我想在Python控制台中打印所有全角字符。

import re
for i  in list(range(65281,65375)):
    x=hex(i)
    x='\\u'+re.search('.{4}$',x).group()
    x.encode("latin1").decode("unicode-escape")
Run Code Online (Sandbox Code Playgroud)

我想使其更简单;重要的关键是要0xff01变为\\uff01,这是我进行转换的方法。

x='0xff01'
'\\u'+re.search('.{4}$',x).group()
Run Code Online (Sandbox Code Playgroud)

有没有更简单的方法可以做到这一点?

Mar*_*ers 5

您的代码以一种非常round回的方式从整数生成单个Unicode字符。使用chr()函数代替:

for i  in range(65281, 65375):
    x = chr(i)
Run Code Online (Sandbox Code Playgroud)

请注意,此list()呼叫在此也非常冗余且浪费。我删除了

从文档中:

返回表示一个字符的字符串,该字符的Unicode代码点为整数i。例如,chr(97)返回字符串'a'

演示:

>>> [chr(i) for i  in range(65281, 65375)]
['?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?']
Run Code Online (Sandbox Code Playgroud)

如果您真的想产生转义的 \uhhhh序列(不将其解释为实际的代码点),请使用str.format()将整数格式化为4位十六进制值的方法:

for i in range(65281, 65375):
    x = '\\u{:04x}'.format(i)
Run Code Online (Sandbox Code Playgroud)

前导0使格式为零填充,4将字段宽度设置为4个字符,并x产生十六进制字符:

>>> ['\\u{:04x}'.format(i) for i  in range(65281, 65375)]
['\\uff01', '\\uff02', '\\uff03', '\\uff04', '\\uff05', '\\uff06', '\\uff07', '\\uff08', '\\uff09', '\\uff0a', '\\uff0b', '\\uff0c', '\\uff0d', '\\uff0e', '\\uff0f', '\\uff10', '\\uff11', '\\uff12', '\\uff13', '\\uff14', '\\uff15', '\\uff16', '\\uff17', '\\uff18', '\\uff19', '\\uff1a', '\\uff1b', '\\uff1c', '\\uff1d', '\\uff1e', '\\uff1f', '\\uff20', '\\uff21', '\\uff22', '\\uff23', '\\uff24', '\\uff25', '\\uff26', '\\uff27', '\\uff28', '\\uff29', '\\uff2a', '\\uff2b', '\\uff2c', '\\uff2d', '\\uff2e', '\\uff2f', '\\uff30', '\\uff31', '\\uff32', '\\uff33', '\\uff34', '\\uff35', '\\uff36', '\\uff37', '\\uff38', '\\uff39', '\\uff3a', '\\uff3b', '\\uff3c', '\\uff3d', '\\uff3e', '\\uff3f', '\\uff40', '\\uff41', '\\uff42', '\\uff43', '\\uff44', '\\uff45', '\\uff46', '\\uff47', '\\uff48', '\\uff49', '\\uff4a', '\\uff4b', '\\uff4c', '\\uff4d', '\\uff4e', '\\uff4f', '\\uff50', '\\uff51', '\\uff52', '\\uff53', '\\uff54', '\\uff55', '\\uff56', '\\uff57', '\\uff58', '\\uff59', '\\uff5a', '\\uff5b', '\\uff5c', '\\uff5d', '\\uff5e']
Run Code Online (Sandbox Code Playgroud)