在循环中打印Unicode元素

2024-10-02 14:23:00 发布

您现在位置:Python中文网/ 问答频道 /正文

考虑一下这个:

print u'\u2599'

我得到

像这样的东西,这正是我需要的

但当我试着以这样的循环方式运行它时:

^{pr2}$

我得到的输出如下:

u'\u2500'
u'\u2501'
u'\u2502'
u'\u2503'
u'\u2504'
u'\u2505'
u'\u2506'
u'\u2507'
u'\u2508'
u'\u2509'
u'\u2510'
u'\u2511'
u'\u2512'
u'\u2513'
u'\u2514'

如何让代码在循环中正确打印Unicode值?在

我尝试从cmd提示符捕获打印输出,但显示错误:

Unable to initialize device PRN 

(这是我研究过的,可能是因为print命令)。在


Tags: 方式print考虑一下pr2u2503u2504u2500u2502
3条回答

您混淆了文本语法及其产生的值。您不能产生一个值并期望它被视为一个文本,就像用'1' + '0'生成一个字符串不会使整数10一样。在

使用^{} function将整数转换为Unicode字符,或使用unicode_escape编解码器将包含Python文本语法的bytestring解码为Unicode字符串:

>>> unichr(0x2599)
u'\u2599'
>>> print unichr(0x2599)
▙
>>> print '\\u2599'
\u2599
>>> print '\\u2599'.decode('unicode_escape')
▙

您还缺少\uhhhh语法使用十六进制数字的关键细节。2500十进制是9C4,十六进制的{}是十进制的9472。在

要生成值范围,您需要使用0xhhhhPython文本表示法来生成0x2500 hex和0x2600 hex之间的序列:

^{pr2}$

因为在使用Unicode代码点时更容易阅读和理解。在

你为什么这样做?在

如果要打印该范围内的代码点,请执行以下操作:

for i in range(0x2500,0x2600):
    print unichr(i)

在上面的代码中,您所要做的就是构造一个字符串,其中包含文本“\u”和一个数字。。。在

for i in range(0x2500, 0x2600):
    print unichr(i)

相关问题 更多 >