当输出包含非ascii字符时,我在格式化python输出时遇到问题。请看以下示例:
>>> persons = [['Anton',12], ['Jürgen',16], ['Bernd', 18]]
>>> for i in persons:
... print '{0:10} {1:3}'.format(i[0], i[1])
...
Anton 12
Jürgen 16
Bernd 18
当然,我希望输出与第二个参数完全对齐,即
Anton 12
Jürgen 16
Bernd 18
如何使用.format()
方法实现所需的输出?
我怀疑我的问题与计算字符串长度的方式有关,即字符长度与字节长度的关系
>>> len('Jürgen'.decode('utf-8'))
6
>>> len('Jürgen')
7
但在这种情况下我无法找到如何指定正确的字符串格式。
当我在Stack Overflow上输入问题时,我甚至可以直观地看到字符串'Anton'的颜色与'Jürgen'不同,这意味着后者可能无法被识别为'普通'字符串,但是我该怎么办?
答案 0 :(得分:1)
尝试设置列表,如:
persons = [['Anton',12], [u'Jürgen',16], ['Bernd', 18]]
答案 1 :(得分:1)
使用UTF-8解码字符串并格式化为Unicode:
>>> persons = [['Anton',12], ['Jürgen',16], ['Bernd', 18]]
>>> for i in persons:
... print u'{0:10} {1:3}'.format(i[0].decode('utf-8'), i[1])
...
Anton 12
Jürgen 16
Bernd 18