由于非ASCII和ASCII字符的宽度问题,简单的用print格式化是无法对齐诸如中英文字符串,可以通过主动字符填充的方式实现
运行环境:win10 + python 3.6
import os
import sysdef isAscii(ch) :
return ch <= u'\u007f'
def formatByWidth(text, width) :
count = 0
for u in text:
if not isAscii(u) :
count += 1
return text + " " * (width - count - len(text))
print(formatByWidth("欢迎", 20) + "test")
print(formatByWidth("hello", 20) + "test")
如果是Python2,注意编码问题,在所有非ASCII处需要调用decode('utf-8'),即以上代码改写成
#-*- coding:utf-8 -*-
import os
import sys
def isAscii(ch) :
return ch <= u'\u007f'
def formatByWidth(text, width) :
count = 0
for u in text:
if not isAscii(u) :
count += 1
return text + " " * (width - count - len(text))
print(formatByWidth("欢迎".decode('utf-8'), 20) + "test")
print(formatByWidth("hello", 20) + "test")
本文介绍了一种解决中英文混合字符串在打印时对齐问题的方法。通过计算非ASCII字符的数量并进行适当的空格填充,使得不同宽度的文字能够整齐排列。适用于Python 3.x和Python 2.x。
835

被折叠的 条评论
为什么被折叠?



