python中英文混合字符串对齐输出

2019PHP高薪工程师学习路线图....>>>

#!/usr/bin/env python
# -*- coding: utf-8 -*-
def is_chinese(uchar):
    """判断一个unicode是否是汉字"""
    if uchar >= u'\u4e00' and uchar <= u'\u9fa5':
        return True
    else:
        return False

def fill_text_to_print_width(text, width):
    stext = str(text)
    utext = stext.decode("utf-8")
    cn_count = 0
    for u in utext:
        if is_chinese(u):
            cn_count += 1
    return " " * (width - cn_count - len(utext)) + stext


def print_table_line(title_config_pairs):
    fmt = "|".join((["{}"] * len(title_config_pairs)))
    print fmt.format(*map(lambda x:fill_text_to_print_width(x[0], x[1]), title_config_pairs))

print_table_line((
    ("标题1", 10),
    ("2标题1", 11),
    ("2标11题1", 13),
    ("abc", 5),
))

print_table_line((
    ("好不好", 10),
    ("琰good", 11),
    ("琰go琰", 13),
    ("234", 5),
))