繁体   English   中英

如何根据字节长度格式化python字符串?

[英]How to format python string based on byte length?

当输出包含非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'具有不同的颜色,这意味着后者可能不会被识别为'normal'字符串,但是我应该怎么做? ?

尝试设置您的列表,例如:

persons = [['Anton',12], [u'Jürgen',16], ['Bernd', 18]]

使用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

暂无
暂无

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

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