由于非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")