繁体   English   中英

如何从python中的生成器表达式打印unicode?

[英]How to print unicode from a generator expression in python?

["

V = [('\\u26' + str(x)) for x  in range(63,70)]

Unicode 是字符到字节的编码,而不是转义序列。 Python 3 字符串是 Unicode。 要返回对应于 Unicode 代码点的字符,请使用chr

chr(i)返回表示其 Unicode 代码点为整数 i 的字符的字符串。 例如,chr(97) 返回字符串 'a',而 chr(8364) 返回字符串 '€'。 这是 ord() 的倒数。

参数的有效范围是从 0 到 1,114,111(基数为 16 的 0x10FFFF)。 如果 i 超出该范围,将引发 ValueError。

要生成 2663 和 2670 之间的字符:

>>> [chr(x) for x  in range(2663,2670)]
['੧', '੨', '੩', '੪', '੫', '੬', '੭']

不过,转义序列使用十六进制表示法。 0x2663 是十进制的 9827,0x2670 变成 9840。

>>> [chr(x) for x  in range(9827,9840)]
['♣', '♤', '♥', '♦', '♧', '♨', '♩', '♪', '♫', '♬', '♭', '♮', '♯']

您还可以使用十六进制数字文字:

>>> [chr(x) for x  in range(0x2663,0x2670)]
['♣', '♤', '♥', '♦', '♧', '♨', '♩', '♪', '♫', '♬', '♭', '♮', '♯']

或者,使用与问题完全相同的逻辑

>>> [chr(0x2600 + x) for x  in range(0x63,0x70)]
['♣', '♤', '♥', '♦', '♧', '♨', '♩', '♪', '♫', '♬', '♭', '♮', '♯']

原始代码不起作用的原因是,当我们不能或不想键入字符本身时,转义序列用于表示字符串中的单个字符。 解释器或编译器立即用相应的字符替换它们。 字符串\\u26是一个转义的\后跟u26

>>> len('\\u26')
4

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM