每日一“酷”之textwrap

介绍:需要美观打印时,可以使用textwrap模块来格式化要输出的文本,这个模块允许通过编程提高类似段落自动换行或填充特性等功能。

1 创建实例数据

1 sample_text = ‘‘‘
2     I’m very happy and I like to make friends with others.
3     I  also like singing but traveling is my favorite,   I have been to  many interesting places in China but I haven’t been to other  countries.
4     What a pity!At school,    I study Chinese,math, English, history, politics  and so on. I like all of them.
5     I often help my teacher take   care of my class and I think I am a good helper.
6     I live  with my parents and we go home on time every day.
7     ‘‘‘

创建 testwrap_example.py 文件 其中保存 sample_text 这段文本信息
2 填充段落

1 import textwrap
2 from testwrap_example import sample_text
3 print ‘No dedent: \n‘
4 print textwrap.fill(sample_text, width=50)

运行结果:

现在的状况是左对齐,只有第一行保留了缩进,其余各行前面的恐吓则嵌入到了段落中。

3、去除现有缩进

1 import textwrap
2 from testwrap_example import sample_text
3 dedented_text = textwrap.dedent(sample_text)
4 print ‘Dedented: \n‘
5 print dedented_text

运行结果:

由于“dedent(去除缩进)”与“indent(缩进)”正好相反,因此这里的结果是得到一个文本框,而且删除各行最前面的空白处。如果莫一行比其他行锁紧更多,曾辉有一些空白符未删除。即使:

执行前(!代表空格):

!aaa

!!!aaa

!bbb

执行后:

aaa

!!aaa

bbb

4、结合dedent 和 fill

现在讲去除缩进的文本传入到fill(),并提供一组不同的wideh值(改值控制显示的宽度)

1 import textwrap
2 from testwrap_example import sample_text
3 dedented_text = textwrap.dedent(sample_text).strip()
4 for width in [45,70]:
5     print ‘%d  Columns:\n‘ % width
6     print textwrap.fill(dedented_text, width=width)
7     print 

运行结果:

5、悬挂缩进

不仅输出的宽度可以设置,还可以单独控制第一行的缩进,以区分后面行

1 import textwrap
2 from testwrap_example import sample_text
3 dedented_text = textwrap.dedent(sample_text).strip()
4 print textwrap.fill(dedented_text,
5                     initial_indent = ‘‘,
6                     subsequent_indent = ‘*‘*4,
7                     width =75 )

运行结果:

这样一来会生成已走过悬挂缩进,即第一行与其他行不同;缩进可以包含空格和其他非空白字符

时间: 2024-10-04 01:50:52

每日一“酷”之textwrap的相关文章

每日一“酷”之heapq

作用:heapq模块实现一个适用于Python列表的最小堆排序算法 堆(heap)是一个属性数据结构,其中子节点与父节点是一种有序关系.二叉堆是一种特殊的堆,二叉堆是完全二元树(二叉树)或者是近似完全二元树(二叉树).可以使用以下如下方式组织的列表或数表示,即元素N的子元素位于2*N+1和2*N+2.这种布局允许原地重新组织堆,从而不必再增加或删除元素时分配大量内存. 最大堆确保父节点大于或等于其两个子节点.最小堆要求父节点小雨或等于其子节点.Python的heqpq模块实现了一个最小堆. 1.

每日一“酷”之array

array--国定类型数据序列 array模块定义一个序列数据结构,看起来和list非常相似,只不过所有成员都必须是相同的基本类型. 1.初始化 array实例化时可以提高一个参数来描述允许哪个种数据类型,还可以有一个初始的数据序列存储在数组中. 1 import array 2 import binascii 3 s = 'This is the array.' 4 a = array.array('c',s) 5 6 print 'As string:', s 7 print 'As arr

每日一“酷”之pprint

pprint – 美观打印 作用:美观打印数据结构 pprint 包含一个“美观打印机”,用于生成数据结构的一个美观视图.格式化工具会生成数据结构的一些表示,不仅可以由解释器正确地解析,而且便于人类阅读.输出尽可能放在一行上,分解为多行时则需要缩进. 这一节中的列子都用到了pprint_data.py,其中包含一下数据 1 data = [(1,{'a':'A','b':'B','c':'C','d':'D'}), 2 (2,{'e':'E','f':'F','g':'G','h':'H', 3

每日一“酷”之copy

Copy – 复制对象 作用:提供一些函数,可以使用浅副本或深副本语义复制对象. copy模块包括两个函数copy()和deepcopy(),用于复制现有的对象 1.  浅副本 copy()创建的浅副本(shallow copy)是一个新容器,其中填充原对象内容的引用.建立list对象的一个浅副本时,会构造一个新的list,并将原对象的元素追加到这个list. 1 import copy 2 3 class MyClass(object): 4 def __init__(self,name):

每日一“酷”之bisect

作用:维护有序列表,而不必在每次想列表增加一个元素时调用sort排序 bisect 模块实现了一个算法用于向列表中插入元素,同时仍保持列表有序.有些情况下,这比反复对一个了表序列更高效,另外也比构建一个大列表之后再显式对齐排序更为高效 1.有序插入 使用insort()按有序顺序像一个列表中插入元素 1 import bisect 2 import random 3 random.seed(1) 4 5 print 'New Pos Contents' 6 print '--- --- ----

每日一“酷”之difflib

介绍:difflib 比较序列.该模块包含一些用来计算和处理序列直接差异的工具.她对于比较文本尤其用,其中包含的函数可以使用多种常用差异格式生成报告. 测试数据(splitlines()按行划分为序列列表): text1 = """ We all know that English is very useful. Many people in the world speak English. So more and more people in China study it.

每日一“酷”之Cookie

Cookie---Http Cookie 作用:Cookie模块定义一些类来解析和创建HTTP cookie首部 Cookie模块为大多数符合RFC 2109的cookie实现一个解析器.这个实现没有标准那么严格,因为,MSIE 3.0X并不支持整个标准. RFC 2109 HTTP状态管理机制 1.  创建和设置Cookie 可以用Cookie为机遇浏览器的应用实现状态管理,因此,Cookie通常由服务器设置,并由客户存储和返回.下面是一个创建cookie的最简单的例子. import Coo

每日一“酷”之Queue

Queue—线程安全的FIFO实现 作用:提供一个线程安全的FIFO实现 Queue模块提供了一个适用于多线程编程的先进先出(first-in,first-out)数据结构,可以用来在生产者和消费者线程之间安全地传递消息或其他数据.它会为调用者处理锁定,使多个线程可以安全第处理同一个Queue实例.Queue的大小(其中包含的元素个数)可能要受限制,,以限制内存使用或处理. 1.  基本FIFO队列 Queue类实现一个基本不能的先进先出容器.使用put()将元素增加到序列一段,使用get()从

每日一“酷”之string

介绍:string模块可以追溯到最早的Python版本中.现在很多的被移植为str和unicode对象的方法,在python3.0中会被完全去除.string模块中,有很多有用的常量和累,用来处理string和unicode对象. 一. 函数 1.capwords()的作用是将一个字符串中所有单词的首字母大写: 1 import string 2 s = 'We believe one thing,today is difficult,tomorrow is more difficult,but