【发布时间】:2017-12-04 19:28:27
【问题描述】:
当输出包含非 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”的颜色不同,这意味着后者可能不会被识别为“正常”字符串,但是什么我应该怎么做?
【问题讨论】:
-
忽略您在此处看到的颜色。解析器试图语法高亮您的输出,就好像它是 Python 代码一样。这并不重要。
-
从 UTF-8 解码,将所有内容格式化为 Unicode 字符串。
-
@MartijnPieters,如果你的意思是
print '{0:10} {1:3}'.format(i[0].decode('utf-8').encode('utf-8'), i[1]),那还是不行…… -
@klopps 您仍然没有格式化为 unicode。
-
@klopps 您的格式字符串也必须是 Unicode;
u'{0:10}...'.format()
标签: python formatting ascii