暂无分类
暂无标签
发布于2020-04-26 11:47 阅读(369) 评论(0) 点赞(1) 收藏(4)
0
1
2
3
4
如果想美观打印(pretty-printing),该模块会提供很多文本编辑器和文字处理器都有的段落自动换行或填充特性。
格式化一个段落,不可避免的要对宽度,缩进,填充等方面做一些操作。在操作文本的时候应当把这三个方面结合起来。
textwrap.fill(text,width=70.**kwargs)
参数说明:
text:输入的文本段落
width:默认的宽度
**kwargs:允许多个映射类型的参数(a = ?? ...)
在最后我会举个例子来体现**kwargs的参数,从中可以感知到python的多态性。
fill()函数相当与格式化字符串的宽度规范。
textwrap.dedent(text) -- 去除现有缩进
textwrap.indent(text,prefix,predicate=None) -- 缩进
该缩进函数可以为一个字符串的所有行增加一致的前缀文本。下面举个例子,你可以在自己的python编辑器中实际操作一下。
- #不改变predicate参数的默认行为
- #为每一行增加前缀
- import textwrap
- from textwrap_example import sample_text
-
- dedented = textwrap.dedent(sample_text) #去除现有的缩进
- wrapped = textwrap.fill(sample_text,width=50) #规范宽度
-
- #为每一行增加前缀
- final = textwrap.indent(wrapped,">") #增加前缀">"
- print(final)
很简单吧。但是下面才是重点,我们已经可以为文本的每一行增加一个前缀,但是,当我们向要把前缀加在符合条件的行。该怎么办呢?接下来就需要predicate参数的重赋值。
- #筛选出符合条件的行,需要定义一个筛选函数
- #可以为predicate参数传入一个callable对象
- import textwrap
- from textwrap_example import sample_text
-
- #定义一个筛选函数
- def should_indent(line):
- print("Indent {!r}?".format(line)) #打印每行的判断的文本
- return len(line.strip()) % 2 == 0 #判断每行的长度是否被2整除
-
- dedented_text = textwrap.dedent(sample_text)
- wrapped = textwrap.fill(dedented_text,width=50)
- final = textwrap.indent(wrpped,"EVEN",predicate=should_indent) #符合条件的行增加前缀"EVEN"
-
- print('\nQuoted block:\n')
- print(final)
好了,基本的textwrap模块函数就有这几个,该有几个没列出,最后再说说首行缩进:
- import textwrap
- from textwrap_example import sample_text
-
- dedented = textwrap.dedent(sample_text).strip()
- print(textwrap.fill(dedented_text,initial_indent='',subsquence_indent=' ' * 4,width=50,))
0
1
2
3
4
5
6
7
作者:天青色等烟雨
链接: https://www.pythonheidong.com/blog/article/344215/6edf41843743c6ab608b/
来源: python黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
Copyright © 2018-2021 python黑洞网 All Rights Reserved 版权所有,并保留所有权利。 京ICP备18063182号-1
投诉与举报,广告合作请联系z452as@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!