ホームページ  >  に質問  >  本文

ubuntu - Python3.x的中文字符在Linux下面的占位问题?

运行环境:python3.x + ubuntu

def print_table(table):
    max_width = 0  # 取table中最长元素
    for x in table:
        if len(x) > col_width:
            max_width = len(x)
    max_width = max_width * 2

    for x in table:
        print('{:{}}'.format(x, max_width) + '|')

英文可以正常对齐:

>>> en = ['hello', 'world', 'hi', 'bug']
>>> print_table(en)
hello     |
world     |
hi        |
bug       |

中文无法无法正常对齐:

>>> ch = ['上海', '北京', '黑龙江', '乌鲁木齐']
>>> print_table(ch)
上海      |
北京      |
黑龙江     |
乌鲁木齐    |

请问这是什么原因?我观察了一下好像是中文字符在终端下面的输出都是占用了两个空格,但是英文只占用了一个空格。如果是这样,有什么好的解决方法?

迷茫迷茫2741日前634

全員に返信(4)返信します

  • PHP中文网

    PHP中文网2017-04-18 10:27:49

    ターミナルのフォントを、より目を引くConsolas、AdobeのオープンソースフォントSource Code Proなどの固定幅フォントに変更します...

    返事
    0
  • 天蓬老师

    天蓬老师2017-04-18 10:27:49

    Unicode文字列の長さは「表示幅」ではなく文字数で計算されるため、漢字も欧文も1としてカウントされます。追加の wcwidth パッケージを使用して、文字が占めるセルの数を計算できます。

    返事
    0
  • 天蓬老师

    天蓬老师2017-04-18 10:27:49

    解決策は、中国語の全角スペース パディングを使用することです。これが役立つはずです。

    リーリー

    返事
    0
  • 天蓬老师

    天蓬老师2017-04-18 10:27:49

    segmentfault.com/q/1010000008288733/a-1020000008291692

    返事
    0
  • キャンセル返事