Python 字符串中英文对齐

小初seo 学习笔记评论156字数 720阅读2分24秒阅读模式
摘要听说“对齐”是阿里系黑话

Python 在终端上打印字符串时,纯英文比较好对齐,中英文混杂时不容易对齐。

英文字符串对齐方法:

text1 = "apple"
text2 = "banana"

# 左对齐
print("{:<10} | {}".format(text1, text2))
# 右对齐
print("{:>10} | {}".format(text1, text2))
# 居中对齐
print("{:^10} | {}".format(text1, text2))
Python 字符串中英文对齐-图片1

当字符串为中文时,此时很难对文本对齐。比如前一个字符串没对齐时,后面跟的数字就歪歪扭扭的:

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 字符串中英文对齐-图片2

 
  • 本文由 小初seo 发表于 2024年2月28日17:15:12
  • 转载请务必保留本文链接:https://www.pkak.cn/xuexi/10193.html
匿名

发表评论

匿名网友
:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

拖动滑块以完成验证