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

Is there a simpler way to change 0xff01 into \\uff01?

我想在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")

我想让它更简单;重要的关键是把0xff01改成\uff01,这里是我的转换方式

x='0xff01'
'\u'+re.search('.{4}$',x).group()

有更简单的方法吗?

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

for i  in range(65281, 65375):
    x = chr(i)

请注意,list() 调用在这里也是非常多余和浪费的;我删除了它。

来自文档:

Return the string representing a character whose Unicode code point is the integer i. For example, chr(97) returns the string 'a'.

演示:

>>> [chr(i) for i  in range(65281, 65375)]
['!', '"', '#', '$', '%', '&', ''', '(', ')', '*', '+', ',', '-', '.', '/', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', ':', ';', '<', '=', '>', '?', '@', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', '[', '\', ']', '^', '_', '`', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '{', '|', '}', '~']

如果你真的想生成 escaped \uhhhh 序列(不将它们解释为它们的实际代码点),请使用 str.format() 将整数格式化为 4 - 数字十六进制值:

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

前导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']