2020年8月28日 / 980次阅读 / 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
前一篇:JupyterLab初体验
后一篇:如何写docstring?
©Copyright 麦新杰 Since 2019 Python笔记