我有一个 unicode 的编码范围,请问用 Python 如何遍历打印出来?

2018-08-31 14:15:44 +08:00
 myKing
\u0000-\u0040
主要是用于正则,我想看看这个范围内是不是都是标点符号
3939 次点击
所在节点    Python
15 条回复
chenstack
2018-08-31 14:50:54 +08:00
print(''.join(chr(u) for u in range(0, 0x41)))
实际上\u0020-\u0040 才是,前面的基本是控制用 ascii
shede333
2018-08-31 14:51:53 +08:00
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)
myKing
2018-08-31 15:11:10 +08:00
0x41 这个是什么??
myKing
2018-08-31 15:11:37 +08:00
@chenstack 0x41 这个是什么??
chenstack
2018-08-31 15:24:26 +08:00
\u0040 这里 0040 就是 16 进制的,range 是左闭右开的,所以\u0020-\u0040 的码点范围是 range(0x00, 0x40+1)
myKing
2018-08-31 16:11:01 +08:00
@chenstack 如果是\u2190-\u21FF,那么如何遍历?
myKing
2018-08-31 16:12:35 +08:00
@chenstack x 这个是不是只能在第二位?还是有规律?
imn1
2018-08-31 16:17:27 +08:00
#1 就结帖了
In [1]: chr(0x8888)
Out[1]: '袈'
In [2]: chr(0x2190)
Out[2]: '←'
rabbbit
2018-08-31 16:23:54 +08:00
0b 二进制 0o 八进制 0x 16 进制
0b10 // 2
0o10 // 8
0x10 // 16
unicode 字符表示方法 \u + 16 进制数值,例如 \u0001
print(u'\u0061') // a
myKing
2018-08-31 16:40:11 +08:00
@rabbbit 谢谢
0b10
0o10
0x10 这种应该叫什么
imn1
2018-08-31 16:55:00 +08:00
你连最基础的整数进制都分不清,后面写程序很难的,先去看基础的书籍吧
rabbbit
2018-08-31 17:04:14 +08:00
0b10 是一个 2 进制数值
前面的 0b 是一个固定的前缀,代表 2 进制数字. Python 识别到 0b 后, 会将其后的内容当作 2 进制来解析.例如
0b11 // 3
0b2 // SyntaxError 2 进制没有 2 这个字符,因此报错

其他的也一样
0o 是 8 进制数值的前缀
0x 是 16 进制数值的前缀
myKing
2018-08-31 17:14:08 +08:00
@rabbbit 谢谢终于知道这个叫做进制数值
myKing
2018-08-31 17:17:40 +08:00
第一次使用 V2EX 我已经有答案,请问如何结束话题?

python2 代码:

for i in range(0x005b,0x005f):
print (unichr(i))
python3 代码请查看 http://www.chenxm.cc/post/683.html
lululau
2018-08-31 17:21:57 +08:00
python -c 'import os;os.system("ruby -e \"puts [*\\\"\\u0000\\\"..\\\"\\u0040\\\"]\"")'

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/484923

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX