暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Python 字符串中英文对齐

生有可恋 2024-02-28
1344

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)))

          中文对齐输出效果如下:

          全文完。

          如果转发本文,文末务必注明:“转自微信公众号:生有可恋”。

          文章转载自生有可恋,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

          评论