python - 中文的 .format() 问题?

标签 python unicode utf-8

我注意到 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/

相关文章:

python - 如何根据 PlaceID 列出 ave_ rating,取其平均值并分配给所有具有 PlaceID 的 PlaceID。

c# - 在 C# 应用程序中使用 user32.dll FindWindow 时的 utf 字符

python - 使utf8在文件中可读

php - UTF-8贯穿始终

python - 比较两个数据库并找到连续的共同值

python - 为什么关键字参数不能位于可变位置参数之前?

python - 将元组列表混合并迭代到文本模板中

php iconv 函数不适用于 linux 主机

qt - 国际语言的 WrapMode 问题

html - 如何在不更改复制粘贴的内容的情况下更改单词在多行中的拆分方式?