2013-06-22 23 views
1

我注意到str.format似乎沒有用漢字記錄下來。問題與.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下試過了

+0

它似乎有可能與此相關:http://en.wikipedia.org/wiki/Halfwidth_and_fullwidth_forms。 – BrenBarn

回答

4

中文字體是「全寬」字體,字符也更寬,即使在控制檯窗口中也是如此。

看到這個問題了類似的問題和答案:
How to control padding of Unicode string containing east Asia characters

有,如果你是混合亞洲和英語,並試圖對位的ASCII字符的全角版本,但我不相信有是重音字符的全角版本,至少沒有特殊字體。