特殊字符在格式化中中断对齐

时间:2014-12-19 13:26:23

标签: python string formatting alignment

阿罗哈,我有一些字符串,我很好地用这种方式用str.format()格式化:

strings = [
   'Aloha',
   'SomeString',
   'Special ´ char',
   'Numb3rsAndStuff'
]

for string in strings:
    print('> {:<20} | more text <'.format(string))

这给了我这个输出:

Aloha                | more text <
strings              | more text <
Special ´ char      | more text <
Numb3rs              | more text <

如您所见,特殊字符会破坏对齐方式。我该怎么办?我不希望这种不满......

1 个答案:

答案 0 :(得分:4)

如果使用普通字符串,Python 2会出现此问题,因为您包含的特殊字符由两个字符'\xc2\xb4'表示,占用两个空格。如果你使用unicode字符串它将工作正常。这涉及将u放在字符串文字的前面。

strings = [
   u'Aloha',
   u'SomeString',
   u'Special ´ char',
   u'Numb3rsAndStuff'
]

for string in strings:
    print(u'> {:<20} | more text <'.format(string))

输出:

Aloha                | more text <
SomeString           | more text <
Special ´ char       | more text <
Numb3rsAndStuff      | more text <

在Python 3中,这不会发生,因为所有字符串都是unicode字符串。