textwrap:格式化文本段落
介绍
需要美观打印(pretty-printing)的情况下,可以使用textwrap模块格式化要输出的文本。
它提供了很多文本编辑器和字符处理器中都有的段落自动换行或填充特性
填充段落
import textwrap
text = '''
There are moments in life when you miss someone
so much that you just want to pick them
from your dreams and hug them for real! Dream what
you want to dream;go where you want to go;
be what you want to be,because you have
only one life and one chance to do all the things you want to do.
'''
# fill函数取文本作为输入,生成格式化文本作为输出
# width表示宽度为50
print(textwrap.fill(text, width=50))
'''
There are moments in life when you miss
someone so much that you just want to pick
them from your dreams and hug them for real!
Dream what you want to dream;go where you
want to go; be what you want to be,because you
have only one life and one chance to do all
the things you want to do.
'''
结果不是太让人满意。文本虽然已经对齐,不过只有第一行保留了缩进,后面各行的空格则嵌入在段落中
去除现有的缩进
import textwrap
text = '''
There are moments in life when you miss someone
so much that you just want to pick them
from your dreams and hug them for real! Dream what
you want to dream;go where you want to go;
be what you want to be,because you have
only one life and one chance to do all the things you want to do.
'''
# 关于刚才的例子,其输出中混合嵌入了制表符和额外的空格,所以格式不是太美观。
# 用dedent可以去除示例文本中所有的行前面的空白符,这会生成更好的结果
# 并且允许在Python代码中直接使用docstring或者内嵌的多行字符串,同时去除代码本身的格式。
print(textwrap.dedent(text).strip())
'''
There are moments in life when you miss someone
so much that you just want to pick them
from your dreams and hug them for real! Dream what
you want to dream;go where you want to go;
be what you want to be,because you have
only one life and one chance to do all the things you want to do.
'''
可以看到dedent作用就是把每一行开头的缩进给去掉
结合dedent和fill
import textwrap
text = '''
There are moments in life when you miss someone
so much that you just want to pick them
from your dreams and hug them for real! Dream what
you want to dream;go where you want to go;
be what you want to be,because you have
only one life and one chance to do all the things you want to do.
'''
# 先去除缩进,然后填充,每行长度60个字符
dedent_text = textwrap.dedent(text).strip()
print(textwrap.fill(dedent_text, width=60))
'''
There are moments in life when you miss someone so much
that you just want to pick them from your dreams and hug
them for real! Dream what you want to dream;go where you
want to go; be what you want to be,because you have only
one life and one chance to do all the things you want to do.
'''
缩进块
import textwrap
text = '''
There are moments in life when you miss someone
so much that you just want to pick them
from your dreams and hug them for real! Dream what
you want to dream;go where you want to go;
be what you want to be,because you have
only one life and one chance to do all the things you want to do.
'''
# 可以使用indent函数为一个字符串的所有行增加一致的前缀文本
dedent_text = textwrap.dedent(text).strip()
final_text = textwrap.indent(dedent_text, ">>>")
print(final_text)
'''
>>>There are moments in life when you miss someone
>>>so much that you just want to pick them
>>>from your dreams and hug them for real! Dream what
>>>you want to dream;go where you want to go;
>>>be what you want to be,because you have
>>>only one life and one chance to do all the things you want to do.
'''
# 除此之外还可以给指定行添加
final_text = textwrap.indent(dedent_text, prefix="->", predicate=lambda line: len(line.strip()) > 40)
print(final_text)
'''
->There are moments in life when you miss someone
so much that you just want to pick them
->from your dreams and hug them for real! Dream what
->you want to dream;go where you want to go;
be what you want to be,because you have
->only one life and one chance to do all the things you want to do.
'''
# 显然lambda里面的line就是每一行的文本,指定文本长度大于40的
悬挂缩进
import textwrap
text = '''
There are moments in life when you miss someone
so much that you just want to pick them
from your dreams and hug them for real! Dream what
you want to dream;go where you want to go;
be what you want to be,because you have
only one life and one chance to do all the things you want to do.
'''
# 不仅可以设置输出的宽度,还可以采用同样的方式单独控制首行的缩进,使首行的缩进不同于后续的各行
dedent_text = textwrap.dedent(text).strip()
print(textwrap.fill(dedent_text,
initial_indent="",
subsequent_indent=" "*4,
width=50))
'''
There are moments in life when you miss someone
so much that you just want to pick them from
your dreams and hug them for real! Dream what
you want to dream;go where you want to go; be
what you want to be,because you have only one
life and one chance to do all the things you
want to do.
'''
# 这便可以生成悬挂缩进,即首行缩进小于其他行的缩进
# 缩进值也可以包含非空白字符。
print(textwrap.fill(dedent_text,
initial_indent="", # 首行缩进
subsequent_indent="*"*4, # 首行之外的行缩进
width=50))
'''
There are moments in life when you miss someone
****so much that you just want to pick them from
****your dreams and hug them for real! Dream what
****you want to dream;go where you want to go; be
****what you want to be,because you have only one
****life and one chance to do all the things you
****want to do.
'''
截断长文本
import textwrap
text = '''
There are moments in life when you miss someone
so much that you just want to pick them
from your dreams and hug them for real! Dream what
you want to dream;go where you want to go;
be what you want to be,because you have
only one life and one chance to do all the things you want to do.
'''
dedent_text = textwrap.dedent(text).strip()
print(textwrap.shorten(dedent_text, width=50)) # There are moments in life when you miss [...]
textwrap:格式化文本段落的更多相关文章
- WPF 语言格式化文本控件
前言 本章讲述正确添加语言资源的方式,以及一段语言资源的多种样式显示. 例如:“@Winter,你好!感谢已使用软件 800 天!” 在添加如上多语言资源项时,“XX,你好!感谢已使用软件 X 天!” ...
- jQuery文本段落展开和折叠效果
<!DOCTYPE html> <head> <meta http-equiv="Content-Type" content="text/h ...
- 解决方案:带格式化文本控件( RichText)的模板如果在InfoPath的浏览器中加载可能出现 COM 组件的80040154错误
建议大家在微软的组件出现问题时,在GOOGLE上搜索解决方案,一般来说,总有结果: 带格式化文本控件( RichText)的模板如果在InfoPath的浏览器中加载,可能出现 COM 组件的80 ...
- python中用xpath匹配文本段落内容的技巧
content = item.xpath('//div[@class="content"]/span')[0].xpath('string(.)') content = item. ...
- c# 正则格式化文本防止SQL注入
/// <summary> /// 格式化文本(防止SQL注入) /// </summary> /// <param name="str">&l ...
- python中使用%与.format格式化文本
初学python,看来零零碎碎的格式化文本的方法,总结一下python中格式化文本的方法.使用不当的地欢迎指出谢谢. 1.首先看使用%格式化文本 常见的占位符: 常见的占位符有: %d 整数 %f 浮 ...
- 格式化文本数据抽取工具awk
在管理和维护Linux系统过程中,有时可能需要从一个具有一定格式的文本(格式化文本)中抽取数据,这时可以使用awk编辑器来完成这项任务.发明这个工具的作者是Aho.Weinberg和Kernighan ...
- jQuery 文本段落展开和折叠效果
jQuery 文本段落展开和折叠效果 <!DOCTYPE html> <head> <meta http-equiv="Content-Type" c ...
- 【python cookbook】【字符串与文本】16.以固定的列数重新格式化文本
问题:重新格式化一些很长的字符串,以指定的列数来显示 解决方案:textwrap模块的fill()方法来实现 # A long string s = "Look into my eyes, ...
随机推荐
- Apache 流框架Flink简介
1.Flink架构及特性分析 Flink是个相当早的项目,开始于2008年,但只在最近才得到注意.Flink是原生的流处理系统,提供high level的API.Flink也提供 API来像Spark ...
- nodeslector使用
问题: node节点挂了一个, 无法切换到另一个node上 解决: .指定了 nodeslector .设置了下面: hostNetwork: true dnsPolicy: ClusterFirst ...
- DRF之APIView源码解析
目录 Django项目中的代码如下 APIView源码解析 源码解析总结 Django项目中的代码如下 urls.py中: from django.conf.urls import url from ...
- 【计算机视觉】UCLA开源图像检测器
UCLA (加州大学洛杉矶分校)发布了一个强大的图像检测软件的源码 ,该软件可以非常高速的检测每个图像的细节,例如可用于检测指纹和虹膜,或者用于自动驾驶.通过识别物体的边界进行提取.首先确定一个物体的 ...
- 【VS开发】学习VS2010 ------ 多种类型的视图集合CTabView
多种类型的视图集合CTabView 首先利用AppWizard建立工程,然后将视类的基类更改为CTabView,并将所有的CView更改为CTabView. 依次插入以CSrollView.CList ...
- 零零散散的python笔记 2
python2和python3的兼容性方面 工具 2to3 python3中自带的工具,可以检查python2升级到python3的diff: 2to3 x.py 2to3 -w x.py # ...
- JS、JQUERY 获取浏览器和屏幕各种高度宽度
好长时间没有更新博客了... 把我最近积累的一点知识点放上博客,以后以备不需之要,也给大家整理一下.. Javascript: IE中:document.body.clientWidth ==> ...
- EMR日常操作
1/ 数据root密码修改后emr配置修改: 2/ 添加s3访问 S3:hadoop-aws-2.8.5.jarjar -tfv hadoop-aws-2.8.5.jar |grep S3FileSy ...
- [转帖]兆芯发布国产X86处理器KX-6000和KH-30000,性能提升达50%,附详情介绍
兆芯发布国产X86处理器KX-6000和KH-30000,性能提升达50%,附详情介绍 2019-06-20 09:56:38作者:linux人稿源:快科技 https://ywnz.com/linu ...
- [转帖]SOCKS5代理与HTTP代理
SOCKS5代理与HTTP代理 https://blog.csdn.net/watson2017/article/details/79897693 [1]什么是SOCKS5协议. SOCKS是一种网络 ...