Python中如何遍历并打印指定的Unicode编码范围?
\u0000-\u0040
主要是用于正则,我想看看这个范围内是不是都是标点符号
Python中如何遍历并打印指定的Unicode编码范围?
print(’’.join(chr(u) for u in range(0, 0x41)))
实际上\u0020-\u0040 才是,前面的基本是控制用 ascii
# 遍历并打印Unicode编码范围的几种方法
# 方法1:直接使用range和chr函数
def print_unicode_range(start, end):
"""打印指定范围的Unicode字符"""
for code_point in range(start, end + 1):
try:
char = chr(code_point)
print(f"U+{code_point:04X} ({code_point}) -> {char}")
except ValueError:
print(f"U+{code_point:04X} -> 无效的Unicode码点")
# 示例:打印基本拉丁字母(A-Z)
print("=== 基本拉丁字母(A-Z)===")
print_unicode_range(0x0041, 0x005A) # A-Z
# 示例:打印中文常用汉字范围(部分)
print("\n=== 常用汉字(部分)===")
print_unicode_range(0x4E00, 0x4E0F) # 几个中文字符
# 方法2:使用列表推导式生成字符列表
def get_unicode_chars(start, end):
"""获取指定范围内的有效Unicode字符列表"""
return [chr(i) for i in range(start, end + 1)
if 0 <= i <= 0x10FFFF]
# 方法3:格式化输出更详细的信息
def print_unicode_range_detailed(start, end, chars_per_line=10):
"""更详细的Unicode范围打印,每行固定字符数"""
print(f"范围: U+{start:04X} - U+{end:04X} ({end-start+1}个码点)")
chars = []
for code in range(start, end + 1):
try:
chars.append(chr(code))
except:
chars.append('�') # 替换无效字符
# 按指定数量分行打印
for i in range(0, len(chars), chars_per_line):
line_chars = chars[i:i + chars_per_line]
line_codes = range(start + i, start + i + len(line_chars))
# 打印码点
codes_str = ' '.join(f'U+{c:04X}' for c in line_codes)
print(f"码点: {codes_str}")
# 打印字符
chars_str = ' '.join(line_chars)
print(f"字符: {chars_str}\n")
# 使用示例
if __name__ == "__main__":
# 打印希腊字母表
print("=== 希腊字母(大写)===")
print_unicode_range_detailed(0x0391, 0x03A1, 5)
# 打印数字形式
print("=== 带圈数字 ===")
print_unicode_range_detailed(0x2460, 0x2469, 5)
核心要点:
- 使用
chr()函数将Unicode码点转换为字符 range()函数定义遍历范围- 十六进制表示更符合Unicode规范(如
0x4E00) - 使用try-except处理无效码点
主要方法:
print_unicode_range(): 基础遍历打印print_unicode_range_detailed(): 格式化分列输出- 支持自定义每行显示字符数
使用示例:
# 打印表情符号范围(部分)
print_unicode_range_detailed(0x1F600, 0x1F60F, 8)
注意: 完整Unicode范围是0x0000-0x10FFFF,但部分区域是保留或无效的。
一句话建议:根据输出需求选择基础打印或格式化分列显示。
Unicode 每个字符的详情,可以查官方文档: https://www.unicode.org/charts/
代码如下:
def show_unicode_text(start_num, length):
“”"
打印 Unicode 字符串
:param start_num: unicode 起始索引值(10 进制)
:param length: 起始值之后,要打印的字符个数
:return:
“”"
for index in xrange(start_num, start_num + length - 1):
hex_str = str(hex(index))[2:]
tmp_text = “\U{:0>8}”.format(hex_str)
# tmp_text = “\u{:0>4}”.format(hex_str) # 仅支持 BMP 平面的字符
dest_unicode = codecs.decode(tmp_text, “unicode_escape”)
print index, tmp_text, dest_unicode
//\u0000-\u0040
show_unicode_text(0, 41)
# show 数字和大写字母
show_unicode_text(48, 44)
# show 部分表情
show_unicode_text(128518, 10)
0x41 这个是什么??
\u0040 这里 0040 就是 16 进制的,range 是左闭右开的,所以\u0020-\u0040 的码点范围是 range(0x00, 0x40+1)
如果是\u2190-\u21FF,那么如何遍历?
x 这个是不是只能在第二位?还是有规律?
#1 就结帖了
In [1]: chr(0x8888)
Out[1]: '袈’
In [2]: chr(0x2190)
Out[2]: ‘←’
0b 二进制 0o 八进制 0x 16 进制
0b10 // 2
0o10 // 8
0x10 // 16
unicode 字符表示方法 \u + 16 进制数值,例如 \u0001
print(u’\u0061’) // a
谢谢
0b10
0o10
0x10 这种应该叫什么
你连最基础的整数进制都分不清,后面写程序很难的,先去看基础的书籍吧
0b10 是一个 2 进制数值
前面的 0b 是一个固定的前缀,代表 2 进制数字. Python 识别到 0b 后, 会将其后的内容当作 2 进制来解析.例如
0b11 // 3
0b2 // SyntaxError 2 进制没有 2 这个字符,因此报错
其他的也一样
0o 是 8 进制数值的前缀
0x 是 16 进制数值的前缀
谢谢终于知道这个叫做进制数值
python -c ‘import os;os.system(“ruby -e “puts [*\”\u0000\”…\"\u0040\"]"")’


