Python实用技法第32篇:对齐文本字符串

问题

我们需要以某种对齐方式将文本做格式化处理。

解决方案

对于基本的字符串对齐要求,可以使用字符串的ljust()、rjust()和center()方法。示例如下:

>>> text = ‘Hello World‘
>>> text.ljust(20)
‘Hello World ‘
>>> text.rjust(20)
‘           Hello World‘
>>> text.center(20)
‘     Hello World ‘
>>>
Python资源分享qun 784758214 ,内有安装包,PDF,学习视频,这里是Python学习者的聚集地,零基础,进阶,都欢迎

所有这些方法都可接受一个可选的填充字符。例如:

>>> text.rjust(20,‘=‘)
‘=========Hello World‘
>>> text.center(20,‘*‘)
‘****Hello World*****‘
>>>

format()函数也可以用来轻松完成对齐的任务。需要做的就是合理利用‘<‘、‘>‘,或‘^‘字符以及一个期望的宽度值[2]。例如:

>>> format(text, ‘>20‘)
‘           Hello World‘
>>> format(text, ‘<20‘)
‘Hello World ‘
>>> format(text, ‘^20‘)
‘     Hello World ‘
>>>

如果想包含空格之外的填充字符,可以在对齐字符之前指定:

>>> format(text, ‘=>20s‘)
‘=========Hello World‘
>>> format(text, ‘*^20s‘)
‘****Hello World*****‘
>>>

当格式化多个值时,这些格式化代码也可以用在format()方法中。例如:

>>> ‘{:>10s} {:>10s}‘.format(‘Hello‘, ‘World‘)
‘    Hello        World‘
>>>

format()的好处之一是它并不是特定于字符串的。它能作用于任何值,这使得它更加通用。例如,可以对数字做格式化处理:

>>> x = 1.2345
>>> format(x, ‘>10‘)
‘     1.2345‘
>>> format(x, ‘^10.2f‘)
‘     1.23 ‘

讨论

在比较老的代码中,通常会发现%操作符用来格式化文本。例如:

>>> ‘%-20s‘ % text
‘Hello World ‘
>>> ‘%20s‘ % text
‘           Hello World‘
Python资源分享qun 784758214 ,内有安装包,PDF,学习视频,这里是Python学习者的聚集地,零基础,进阶,都欢迎

但是在新的代码中,我们应该会更钟情于使用format()函数或方法。format()比%操作符提供的功能要强大多了。此外,format()可作用于任意类型的对象,比字符串的ljust()、rjust()以及center()方法要更加通用。

原文地址:https://blog.51cto.com/14445003/2430335

时间: 2024-10-09 02:02:43

Python实用技法第32篇:对齐文本字符串的相关文章

Python实用技法第24篇:正则:查找和替换文本

1.需求 我们想对字符串中的文本做查找和替换. 2.解决方案 对于简单的文本模式,使用str.replace()即可. 例如: text='mark ,帅哥,18,183 帅,mark' print(text.replace('18','19')) print(text) Python资源分享qun 784758214 ,内有安装包,PDF,学习视频,这里是Python学习者的聚集地,零基础,进阶,都欢迎 运行结果: mark ,帅哥,19,193 帅,mark mark ,帅哥,18,183

Python实用技法第22篇:利用Shell通配符做字符串匹配

1.需求 当工作在UNIX Shell下时,我们想使用常见的通配符模式(即:.py,Dat[0-9].csv等)来对文本做匹配. 2.解决方案 fnmatch模块提供了两个函数:fnmatch()和fnmatchcase(),可用来执行这样的匹配,使用起来非常简单. 实例: from fnmatch import fnmatch,fnmatchcase print(fnmatch('mark.txt','*.txt')) print(fnmatch('mark.txt','?ark.txt'))

Python实用技法第26篇:定义实现最短匹配的正则表达式

1.需求 我们正在尝试用正则表达式对文本模式做匹配,但识别出来的是最长的可能匹配.相反,我们想将其修改为最短的可能匹配. 2.解决方案 这个问题通常会在匹配的文本被一对开始和结束的分隔符包起来的时候出现(例如带引号的字符串),为了说明这个问题,请看下面实例: import re str_pat=re.compile(r'\"(.*)\"') text1='mark say "love"' text2='mark say "love",jingji

Python实用技法第31篇:文本过滤和清理

问题 某些无聊的脚本小子在Web页面表单中填入了"pyt???"这样的文本,我们想以某种方式将其清理掉. 解决方案 文本过滤和清理所涵盖的范围非常广泛,涉及文本解析和数据处理方面的问题.在非常简单的层次上,我们可能会用基本的字符串函数(例如str.upper()和str.lower())将文本转换为标准形式.简单的替换操作可通过str.replace()或re.sub()来完成,它们把重点放在移除或修改特定的字符序列上.也可以利用unicodedata.normalize()来规范化文

Python实用技法第6篇:让字典保持有序

1.需求 我们想创建一个字典,同时当对字典做迭代或序列化操作时,也能控制其中元素的顺序. 2.解决方案 要控制字典中元素的顺序,可以使用collections模块中的OrderedDict类.当对字典做迭代时,它会严格按照元素初始添加的顺序进行. from collections import OrderedDict d=OrderedDict() d['a']=1 d['b']=2 d['c']=3 d['d']=4 #根据插入删除输出 for key in d: print(key,d[ke

【python cookbook】【字符串与文本】13.对齐文本字符串

问题:以某种对齐方式将文本做格式化处理 解决方案: 1.针对字符串:ljust().rjust().center()方法 2.针对任何值,更加通用的:format()  更多内容:https://docs.python.org/3/library/string.html#formatspec >>> text='Hello World' >>> text.ljust(20) 'Hello World ' >>> text.rjust(20) ' Hel

Python成长之路第一篇(1)__字符串初识

在很多编程的书中都会以print  "Hello,world!"这样的而一个程序为开始,那么hello,world是什么呢?这就是本章讲解的字符串(也即是一串字符) 一.单引号,双引号和转义引号 (1)在一般的时候 'Hello,world!'和"Hello,world!"是没有什么区别的,那么为什么会两个都可以用呢?是因为在某些情况下,他们会排上用处 1 >>> "Hellow,world" 2 'Hellow,world' 

python 替换指定目录下,所有文本字符串

网页保存后,会把js文件起名为.下载,html里面的引用也会有,很不美观,解决方案:用python替换字符串 import os import re """将当前目录下所有文档进行替换操作""" def change_str(path): str_pattern = r"\.下载" str_new = r"" path_list = os.listdir(path) for file in path_lis

Python学习【第7篇】:字符串拼接

1.格式化字符有%s,%d,%f浮点数 %s代表格式化字符串,s是string意思 msg = 'my name is %s'%"xiaoxing"print(msg)运行结果:my name is xiaoxing %d代表整型数据int msg = 'my name is %s,age:%d'%("xiaoxing",22)print(msg)运行结果:my name is xiaoxing,age:22 %f 代表浮点数 tp_1 = "年利率为%f