0

我注意到str.format似乎没有做中文字符记录的事情。

考虑:

# -*- coding: utf-8 -*-

from __future__ import print_function

tests={'German': [u'Straße',u'auslösen',u'zerstören'], 
       'French': [u'français',u'américaine',u'épais'], 
       'Chinese': [u'中國的',u'英語',u'美國人']}

for k in tests.keys():
    print(k)
    for v in tests[k]:
        print(u'"{:^15}"'.format(v))  

我的理解,"{:^15}"格式字符串应该是固定宽度的。但是,请注意输出:

Chinese
"      中國的      "
"      英語       "
"      美國人      "
French
"   français    "
"  américaine   "
"     épais     "
German
"    Straße     "
"   auslösen    "
"   zerstören   "

汉字的字段宽度明显变化。中文字符串也不以 15 个字符为中心。

知道为什么会这样吗?我在 Py 2.7 和 Py 3.3 下都试过了

4

1 回答 1

4

中文字体是“全角”字体,字符更宽,即使在控制台窗口中也是如此。

请参阅此问题以获取类似的问题和答案:
如何控制包含东亚字符的 Unicode 字符串的填充

如果您将亚洲和英语混合并尝试对齐,则有全角版本的 ASCII 字符,但我不相信有重音字符的全角版本,至少没有特殊字体。

于 2013-06-22T05:18:28.003 回答