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, ...
随机推荐
- Windows10系统python环境下安装Dlib库(转载,蔡军帅亲测可用)
Dlib是一个很优秀的机器学习库,最近做人脸识别要用到这个库,简要记录一下配置过程,准备工作: 1.python环境 2.安装好pip(这里有个简单的安装教程) 3.Dlib包,贴一个我安装的版本,链 ...
- 微信小程序开发-框架
小程序开发框架的目标是通过尽可能简单.高效的方式让开发者可以在微信中开发具有原生 APP 体验的服务.框架提供了自己的视图层描述语言 WXML 和 WXSS,以及基于 JavaScript 的逻辑层框 ...
- 前端学习(一) body标签(上)
body标签中相关标签 主要内容: 字体标签: h1~h6.<font>.<u>.<b>.<strong><em>.<sup> ...
- lamp的动静分离部署
一.lamp分离部署工作图 二.LAMP的安装与配置 1.环境准备 2.对 PHP 服务器进行部署 #以下为安装PHP及其依赖 [root@php ~ ]# .tar.gz -C /usr/src [ ...
- 分类并查集[noi2001 食物链]
题目链接:http://cogs.pro:8081/cogs/problem/problem.php?pid=pxNJzxVPU 题目有三种动物,A吃B,B吃C,C吃A 即B是A的食物,A是B的天敌, ...
- TensorFlow-cpu优化及numpy优化
1,TensorFlow-cpu优化 当你使用cpu版TensorFlow时(比如pip安装),你可能会遇到警告,说你cpu支持AVX/AVX2指令集,那么在以下网址下载对应版本. https://g ...
- vue工程中,如何查询用户访问的地理位置 + vue中的jsonp
有一个需求,就是当用户访问你们公司的网站时,需要查到这位用户的地理位置(通过电脑ip来访问) 试了很多方法,感觉使用腾讯的位置服务api最好,返回的信息最全,包括经纬度,国家城市地区等.而其他绝大多数 ...
- ipad3 修理记录
1,左下角 有视频线 2,右下角 有WIFI线
- kube-metric在kubernetes上的部署
1.拿包 wgethttps://github.com/kubernetes/kube-state-metrics/archive/v1.7.2.tar.gz 2.tar -zxf v1.7.2.t ...
- SpringBoot默认日志的使用方法及常用配置
SpringBoot默认采用slf4j+logback 的组合形式,但也提供对JUL.log4j2.Logback提供了默认配置. 我们使用IDEA的spring初始化创建一个springboot项目 ...