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: sbo@zju.edu.cn
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: sbo@zju.edu.cndef myAlign(string, length=0):if length == 0:return stringslen = len(string)re = stringif isinstance(string, str):placeholder = ' 'else:placeholder = u' 'while slen < length:re += placeholderslen += 1return re
s1 = u'我是一个长句子,是的很长的句子。'
s2 =u'我是短句子'print myAlign(s1, 20) + myAlign(s2, 10)
print myAlign(s2, 20) + myAlign(s1, 10)



引用: https://blog.csdn.net/sbdxxcjh/article/details/38051573

方法二、 宽度不够时采用中文空格填充

采用.format打印输出时,可以定义输出字符串的输出宽度,在 ‘:’ 后传入一个整数, 可以保证该域至少有这么多的宽度。 用于美化表格时很有用。。但是在打印多组中文的时候,不是每组中文的字符串宽度都一样,当中文字符宽度不够的时候,程序采用西文空格填充,中西文空格宽度不一样,就会导致输出文本不整齐
中文空格的编码为chr(12288)

tplt = "{0:{3}^10}\t{1:{3}^10}\t{2:^10}"print(tplt.format("学校名称", "位置", "分数", chr(12288)))for i in range(num):u = ulist[i]print(tplt.format(u[0], u[1], u[2], chr(12288)))
>>> 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]) # 中间对齐



右对齐

Python的print输出对齐相关推荐

  1. python的print输出_python中的print()输出

    1.普通的输出: print(str)#str是任意一个字符串,数字・・・ 2.格式化输出: print('1,2,%s,%d'%('asd',4)) 1,2,asd,4 与C语言有点类似 3.其它: ...

  2. python读取print输出的内容_Python文件中将print的输出内容重定向到变量中

    有时候需要用到别人的代码, 但是又不想修改别人的文件, 想拿到输出的结果, 这时候就需要使用sys模块, 将print输出的内容重定向到变量中. Python调用sys模块中的sys.stdout, ...

  3. python用print输出不同颜色字体

    前言 为了使python打印的内容更具有区分度,比如让重要的内容字体颜色更明显,而不是运行之后一片白色的字体,可以用下面这个小技巧用print输出不同颜色的字体. 1.格式 # 格式: # 设置颜色开 ...

  4. python 中 print 输出内容不换行

    python 的print 函数,默认会换行. 有的时候需要使用print 但是又不需要换行.这就需要使用print输出不换行的用法.在python2 和python3 中使用方法不同. python ...

  5. python的print输出居中对齐

    print('这条线下后是输出'.center(60,'-'))# your codesprint('输出完毕'.center(64,'-')) 原因是vscode上输出太乱了,感觉找不到程序的输出内 ...

  6. python将print 输出为表格形式_python print 格式化输出

    使用print可以输出的类型有:字符串.整数.浮点数及精度控制. 1.格式化输出整数 python print也支持参数格式化,与C言的printf似: strHello = "the le ...

  7. python 用print输出字符串和数字的组合_Python字符串拼接(包含字符串拼接数字)...

    我们见过书写字符串的一种特殊方式,即直接将两个字符串紧挨着写在一起,这样的话 Python 就会自动拼接它们,比如说:s1 = "Hello,"'Charlie' print(s1 ...

  8. Python 3 print() 输出自动换行

    print() 函数默认"在输出结尾自动包含换行",而添加 end=' ' 参数可以在输出末尾添加空字符,就不会再自动添加一个换行符 这个只有 Python3 有用,Python2 ...

  9. python的print输出为红色以及其他颜色的代码示例,Python print()输出文字带颜色设置方法

    格式示例 标准格式: print("\033[显示方式:前景颜色:背景颜色m-\033[0m") 显示方式 显示方式 值 颜色 前景色 背景色 默认 0 黑色 30 40 高亮显示 ...

  10. python输出日志文件_python将print输出的信息保留到日志文件中

    具体代码如下所示: import sys import os import sys import io import datetime def create_detail_day(): ''' :re ...

最新文章

  1. Spring scope 学习笔记
  2. SpringMvc @RequestParam、 @RequestBody、@RequestPart 的区别
  3. 计算机有什么著名基金经理排名,百万年薪的基金经理,都是什么专业出身?!...
  4. 简单参数让谷歌Chrome浏览器单进程运行
  5. Redis详解(六)------ RDB 持久化
  6. Java native方法String转char*以及String[]转char**
  7. php mysql 编码转换_PHP编码转换函数应用
  8. OC 自定义 get/set 方法注意点
  9. 数据库添加字段的sql语句
  10. ruby入门教程:入门ruby的方法
  11. 怎么在国内创建谷歌账号_如何在Google文档中创建模板
  12. Java 11中文版 API参考文档(收藏)
  13. PING命令结果中的TTL是什么?
  14. 使用AIDL实现Android的跨进程通信
  15. [VT虚拟化驱动]利用EPT实现无痕HOOK
  16. Hbase HBCK2
  17. MD5 标准算法详解
  18. 职场必看的十部经典电影
  19. aspx repeater 用法_ASP.NET-----Repeater数据控件的用法总结(转)
  20. 如何选择PXI与PXIe开关模块

热门文章

  1. 给大家推荐一款好用的背单词APP(目前只支持苹果手机)
  2. 程序存储器编址及程序执行顺序
  3. 四万字长文说operator new operator delete
  4. 上线app store,去掉图标透明色
  5. 转眼间十年过去了,还记得曾经红遍大江南北的这首歌吗?
  6. 374C. Inna and Dima
  7. ACM算法模板小汇总
  8. 《狂人日记》是中国第一部现代白话文小说
  9. 2018年中考计算机考试成绩,2018年北京中考考试科目、时间及成绩公布通知
  10. Effective C++改善程序与设计的55个具体的做法