(含)中文字符串的对齐

2020年8月28日 / 83次阅读 / Last Modified 2020年8月31日
字符串

python中有很多支持字符串对齐的语法,但是在面对中文字符串的时候,我们总是对不齐......这是因为中文1个字符的宽度 = 2个ASCII符号的宽度,一个字符串,如果长度相同(len函数的返回值),但是如果含有中文,长度就不同。

因此,对齐中文字符串,分两种情况:

对齐纯中文字符串

这种情况相同好处理,我们只要保证每个字符的宽相同即可。关键点在于:用来对齐的纯中文字符串的空格,不能再是ASCII空格,要使用中文全角空格来占位,才能对齐。

cstr = ['人生啊',
        '云上小悟',
        '我喜欢看书',
        '麻将']
for it in cstr:
    print('{0:{1}>10}'.format(it, chr(12888)))
㉘㉘㉘㉘㉘㉘㉘人生啊
㉘㉘㉘㉘㉘㉘云上小悟
㉘㉘㉘㉘㉘我喜欢看书
㉘㉘㉘㉘㉘㉘㉘㉘麻将

这段代码,就是用format中的{1}作为填充符号,chr(12888)就是全角空格,也可以写成\u3000,一样的。

cstr = ['人生啊',
        '云上小悟',
        '我喜欢看书',
        '麻将']
for it in cstr:
    print('{:\u3000>10}'.format(it))

中英文混合字符串的对齐

这种情况很难搞,中英文混合的字符串,中间既有窄的英文字符,也有宽的中文字符,用前述的方法是行不通的。

这种情况,如果一定要对齐,我的方法就是自己写个函数了,自己写个函数计算一下在等宽输出的情况下,需要补多少空格,自己控制是左对齐还是右对齐。

-- EOF --

本文链接:https://www.pynote.net/archives/2420

留言区

电子邮件地址不会被公开。 必填项已用*标注


前一篇:
后一篇:

More


©Copyright 麦新杰 Since 2019 Python笔记

go to top