textwrap-- paragraphs of text formatted

Introduction

Print appearance if needed (pretty-printing) may be used to format the text to be output textwrap module.
It provides a number of text editors and word processor in both passages wrap or fill characteristics

Filling paragraphs

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.
'''

The result is not very satisfactory. Although the text has been aligned, but retains only the first line indentation, the space behind each row embedded in the paragraph

Removal of existing indentation

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 role is to be seen at the beginning of each line indent to remove

Combined dedent and 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.
'''

Indented block

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的

Hanging indent

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.
'''

Truncate long text

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 [...]

Guess you like

Origin www.cnblogs.com/traditional/p/11853704.html