为什么这段短代码与其他代码的运行方式不同?
# -*- coding: utf-8 -*-
for c in 'aɣyul':
print c
我在每次运行中的输出是:
# nothing
---
a
---
l
---
u
l
---
a
y
u
l
...etc
我知道如何解决问题,问题是为什么Python在每次运行时打印字符串的不同部分而不是相同的部分?
答案 0 :(得分:1)
你需要在你的字符串的前面添加一个u
,这使得python以你的字符串作为unicode,并在打印时解码你的角色:
>>> for c in u'aɣyul':
... print c
...
a
ɣ
y
u
l
请注意,如果没有编码,python将在两个单独的十六进制值中打破unicode字符,并且在每个打印中,您将获得此十六进制值的字符串表示形式:
>>> 'aɣyul'
'a\xc9\xa3yul'
^ ^
如果你想知道为什么python将unicode分解为2的十六进制值,因为str
的实例包含原始的8位值,而unicode字符使用超过8位的内存。
您也可以手动解码十六进制值:
>>> print '\xc9\xa3'.decode('utf8')
ɣ