推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
myKing
V2EX  ›  Python

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

  •  1
     
  •   myKing · Aug 31, 2018 · 4918 views
    This topic created in 2841 days ago, the information mentioned may be changed or developed.
    \u0000-\u0040
    主要是用于正则,我想看看这个范围内是不是都是标点符号
    15 replies    2018-08-31 17:21:57 +08:00
    chenstack
        1
    chenstack  
       Aug 31, 2018   ❤️ 1
    print(''.join(chr(u) for u in range(0, 0x41)))
    实际上\u0020-\u0040 才是,前面的基本是控制用 ascii
    shede333
        2
    shede333  
       Aug 31, 2018
    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
        3
    myKing  
    OP
       Aug 31, 2018
    0x41 这个是什么??
    myKing
        4
    myKing  
    OP
       Aug 31, 2018
    @chenstack 0x41 这个是什么??
    chenstack
        5
    chenstack  
       Aug 31, 2018
    \u0040 这里 0040 就是 16 进制的,range 是左闭右开的,所以\u0020-\u0040 的码点范围是 range(0x00, 0x40+1)
    myKing
        6
    myKing  
    OP
       Aug 31, 2018
    @chenstack 如果是\u2190-\u21FF,那么如何遍历?
    myKing
        7
    myKing  
    OP
       Aug 31, 2018
    @chenstack x 这个是不是只能在第二位?还是有规律?
    imn1
        8
    imn1  
       Aug 31, 2018
    #1 就结帖了
    In [1]: chr(0x8888)
    Out[1]: '袈'
    In [2]: chr(0x2190)
    Out[2]: '←'
    rabbbit
        9
    rabbbit  
       Aug 31, 2018
    0b 二进制 0o 八进制 0x 16 进制
    0b10 // 2
    0o10 // 8
    0x10 // 16
    unicode 字符表示方法 \u + 16 进制数值,例如 \u0001
    print(u'\u0061') // a
    myKing
        10
    myKing  
    OP
       Aug 31, 2018
    @rabbbit 谢谢
    0b10
    0o10
    0x10 这种应该叫什么
    imn1
        11
    imn1  
       Aug 31, 2018
    你连最基础的整数进制都分不清,后面写程序很难的,先去看基础的书籍吧
    rabbbit
        12
    rabbbit  
       Aug 31, 2018
    0b10 是一个 2 进制数值
    前面的 0b 是一个固定的前缀,代表 2 进制数字. Python 识别到 0b 后, 会将其后的内容当作 2 进制来解析.例如
    0b11 // 3
    0b2 // SyntaxError 2 进制没有 2 这个字符,因此报错

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

    python2 代码:

    for i in range(0x005b,0x005f):
    print (unichr(i))
    python3 代码请查看 http://www.chenxm.cc/post/683.html
    lululau
        15
    lululau  
       Aug 31, 2018
    python -c 'import os;os.system("ruby -e \"puts [*\\\"\\u0000\\\"..\\\"\\u0040\\\"]\"")'
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5372 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 57ms · UTC 08:51 · PVG 16:51 · LAX 01:51 · JFK 04:51
    ♥ Do have faith in what you're doing.