Python的print输出对齐

您所在的位置:网站首页 python如何打印数据 Python的print输出对齐

Python的print输出对齐

2023-11-04 08:00| 来源: 网络整理| 查看: 265

Python的print输出对齐 1、 在使用Python的内建函数print作英文输出时,应用格式化输出可以对齐得很好:2、 但当字符串包含中文时,却发现它对齐得不是很好:方法一:方法二、 宽度不够时采用中文空格填充3、Python print 对齐打印,左对齐,右对齐

1、 在使用Python的内建函数print作英文输出时,应用格式化输出可以对齐得很好:

参考: https://docs.python.org/3/library/string.html#string-formatting

s1 = 'I am a long sentence.' s2 = 'I\'m short.' print '%-30s%-20s' %(s1,s2) #'%-30s' 含义是 左对齐,且占用30个字符位 print '%-30s%-20s' %(s2,s1)

在这里插入图片描述

2、 但当字符串包含中文时,却发现它对齐得不是很好: # -*- coding:utf-8 -*- #author: Song Bo, Eagle, ZJU #email: [email protected] s1 = '我是一个长句子,是的很长的句子。' s2 ='我是短句子' print '%-30s%-20s' %(s1,s2) print '%-30s%-20s' %(s2,s1)

在这里插入图片描述 无法对齐。

原因是这样:在print中,函数为了实现字符串对齐,会在未达到指定长度的字符串末尾添上空格补齐。

但是,问题在这里,它会填入ASCII码为20的space,也就是半角空格。它的长度等于每个字母或数字的宽度,但远比汉字的宽度小,所以导致补足后的字符串长度仍然不同。

解决方案: 重写一个格式对齐函数,函数中判断字符串是否是中文字符串,有的话则添加全角空格补齐,否则添加半角空格补齐。

方法一: # -*- coding:utf-8 -*- #author: Song Bo, Eagle, ZJU #email: [email protected] def myAlign(string, length=0): if length == 0: return string slen = len(string) re = string if isinstance(string, str): placeholder = ' ' else: placeholder = u' ' while slen >> List = [['A', 'B'], ['A134563421', 'B'], ['A', 'B']] >>> for row in List: ... print '{0:30}{1}'.format(row[0], row[1]) ... file.write('{0:30}{1}\n'.format(row[0], row[1])) A B A134563421 B A B 3、Python print 对齐打印,左对齐,右对齐

当需要打印如上左对齐的形式是,我们可以通过s.ljust() 之类的函数来处理。 (1)S.ljust(width,[fillchar])

其中,width 表示对齐的字符数,fillchar 表示空格部分可以用过给定的单个字符来填充,默认是空格。ljust中第一个字母‘l’代表左对齐,不足部分用fillchar填充,默认的为空格。类似地,S.rjust(width,[fillchar]) #右对齐,S.center(width, [fillchar]) # 中间对齐

在这里插入图片描述 在这里插入图片描述 右对齐 在这里插入图片描述



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3