ubuntu - Python3.x的中文字符在Linux下面的占位问题?
迷茫
迷茫 2017-04-18 10:25:49
0
4
628

运行环境: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)
上海      |
北京      |
黑龙江     |
乌鲁木齐    |

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

迷茫
迷茫

业精于勤,荒于嬉;行成于思,毁于随。

모든 응답(4)
洪涛

단말기 글꼴을 더 눈길을 끄는 Consolas, Adobe의 오픈소스 글꼴인 Source Code Pro 등 고정폭 글꼴로 변경하세요...

Peter_Zhu

유니코드 문자열의 길이는 "표시 너비"가 아닌 문자 수를 기준으로 계산됩니다. 한자와 서양 문자는 모두 1로 계산되므로 정렬되지 않습니다. 추가 wcwidth 패키지를 사용하여 문자가 차지하는 셀 수를 계산할 수 있습니다.

Peter_Zhu

해결책은 중국어 전폭 공백 패딩을 사용하는 것인데, 이것이 도움이 될 것입니다.

으아악
Peter_Zhu

segmentfault.com/q/1010000008288733/a-1020000008291692

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!