python如何利用format对齐不能完全对齐的中文字符串

对齐字符串方式有非常多种,但,面对含有中文字符串的情况时可能出现不能完全对齐的状况,无论是横向制表符还是预留空格,都不能有效完成大量数据的对齐,不过format是可以做到的。具体陈述如下,先看代码:

sale=[("《哪吒之魔童降世》",49.34),("《疯狂的外星人》",21.83),("《流浪地球》",46.18), \
      ("《我和我的祖国》",29.64),("《烈火英雄》",19.76),("《中国机长》",28.46)]
sale.sort(key=lambda x:x[1],reverse=True)
print("电影名\t\t\t\t\t\t\t "+"票房")
for i in range(0,len(sale)):
    print("{0:{1}<20}".format(sale[i][0]," "), "{0: <10}".format(sale[i][1]))

运行结果:python如何利用format对齐不能完全对齐的中文字符串_第1张图片

 如果正常横向制表符的话就成了:

python如何利用format对齐不能完全对齐的中文字符串_第2张图片

 先说下原因:

对于正常的对齐方式,使用的占位符都是半角,而中文是全角,那么最后虽然同样是格式化相同的宽度,产生的结果就会出现中文全角宽度和英文半角宽度不一样,就会出现对齐了,诶,又没完全对齐,就很气

解决方案:

另外给format格式化增加一个全角的空格(那不是两个半角空格堆在一起,两个半角空格堆一起会给你报错,那不是一个字符),至于全角空格怎么打出来,问度娘。

这是我同学发现的问题,首先表示对其发现表示感谢,对这个问题我表示闻所未闻,因此解决方法也是咕了一大通才总结出的,并且还十分单一,欢迎各位大佬评论区补充,某不胜感激。

由于评论区大佬补充了一种全新的中英混排的情况,因此对该程序进行了迭代,使其能够适应该混排场景:python如何利用format对齐不能完全对齐的中英文混合字符串_山河之书Liu_Zixin的博客-CSDN博客

你可能感兴趣的:(python,python)