Python 在终端上打印字符串时,纯英文比较好对齐,中英文混杂时不容易对齐。
纯英文字符串对齐方法:
text1 = "apple"
text2 = "banana"
# 左对齐
print("{:<10} | {}".format(text1, text2))
# 右对齐
print("{:>10} | {}".format(text1, text2))
# 居中对齐
print("{:^10} | {}".format(text1, text2))
当字符串为中文时,此时很难对文本对齐。比如前一个字符串没对齐时,后面跟的数字就歪歪扭扭的:
print("{:<30} {}".format(truncated_s, len(value)))
字符串对齐的逻辑是长度不足时补空格,但中英文字符宽度不同,中文字符的宽度是英文字符的两倍。 字符串自带的 format 方法在处理对齐时只考虑了英文,处理中文时就会出现无法对齐的现象。
既然是字符宽度不同导致的,只要能正确计算字符串的宽度而非字符个数,那么就可以根据字符串的宽度来补空格。
处理宽字符对齐的函数如下:
import wcwidth
def align_text(text, width):
"""中文对齐"""
text_width = wcwidth.wcswidth(text)
if text_width < width:
return text + ' ' * (width - text_width)
else:
return text
这里用到了 wcwidth 模块,使用前需要 pip install wcwidth 进行安装。更改后的对齐语句为:
print("{} {}".format(align_text(truncated_s, 30), len(value)))
中文对齐输出效果如下:
全文完。
如果转发本文,文末务必注明:“转自微信公众号:生有可恋”。
原文始发于微信公众号(生有可恋):Python 字符串中英文对齐
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论