在 Python 中打印 unicode 字符的 For 循环

问题描述 投票:0回答:2

我在 Python 中做了一个基本的 for 循环,因为我想使用 unicode 表示法打印所有可能的字符。

for i in range(1000,1100):
    print('\\u'+str(i))

并打印以下内容

...
\u1077
\u1078
\u1079

等等...

我不明白为什么循环会打印这样的字符串,但如果我只是执行:

print('\u0227')

它会打印 ş。

我不明白从 for 循环打印为连接字符串与仅通过调用 print 并键入 unicode 表示来打印它之间的区别。另外,for 循环生成的字符串似乎还需要一个反斜杠来转义。

我调用了 type 函数,在这两种情况下它都说这些是字符串,但只是想确定一下这种行为。

python unicode python-unicode
2个回答
3
投票
代码中所谓的“字符串文字”在变成字符串之前会被处理。字符串中的反斜杠标记后面的内容必须进行特殊解释。

如果后跟第二个反斜杠,则最终字符串将呈现为 仅包含一个反斜杠。所以
    字符串文字
  • '\\u'变成

    \u

    如果后跟
  • u
  • 和四个十六进制数字,则为整个序列 文字中的(包括反斜杠)变成字符串中表示的 unicode 字符:文字

    '\u0227'

     变成字符串 
    ȧ
    
    
    

    正如 Paul Panzer 已经写过的,
  • chr()
(对于 Python 3.x)或

unichr()

(对于 Python 2.x)获取 unicode 字符的编号并返回仅包含该字符的字符串。


0
投票

#!/usr/bin/python3 for i in range(0x0, 0x100): s = "\\" + "u" + f"{i:#0{6}x}"[-4:] print(s[-2:], end=" = ") print(s.encode('utf-8').decode('unicode_escape'))


© www.soinside.com 2019 - 2024. All rights reserved.