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 に答える