我注意到 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 下都试过了
最佳答案
中文字体是“全角”字体,字符更宽,即使在控制台窗口中也是如此。
有关类似的问题和答案,请参阅此问题:
How to control padding of Unicode string containing east Asia characters
如果您混合使用亚洲和英语并尝试对齐,则有 ASCII 字符的全角版本,但我不相信有重音字符的全角版本,至少没有特殊字体。
关于python - 中文的 .format() 问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17247478/