资讯专栏INFORMATION COLUMN

Python每日一练0017

vincent_xyb / 2267人阅读

问题

你有一些长字符串,想以指定的列宽将它们重新格式化。

解决方案

使用textwrap模块的fillwrap函数

假设有一个很长的字符串

s = "Look into my eyes, look into my eyes, the eyes, the eyes, 
the eyes, not around the eyes, don"t look around the eyes, 
look into my eyes, you"re under."

如果直接输出的话,可读性会比较差

>>> print(s)
Look into my eyes, look into my eyes, the eyes, the eyes, the eyes, not around the eyes, don"t look around the eyes, look into my eyes, you"re under.

我们可以使用fill函数来将这个长字符串自动切分为若干短字符串,只需要指定width即可

>>> print(textwrap.fill(s, width=60))
Look into my eyes, look into my eyes, the eyes, the eyes,
the eyes, not around the eyes, don"t look around the eyes,
look into my eyes, you"re under.

也可以使用wrap函数,但是效果是一样的,只不过wrap函数返回的是一个列表而不是字符串

我们也可以指定其他一些参数比如initial_indent来设置段落的缩进,更多参数见讨论部分的链接

>>> print(textwrap.fill(s, width=60, initial_indent="    "))
    Look into my eyes, look into my eyes, the eyes, the
eyes, the eyes, not around the eyes, don"t look around the
eyes, look into my eyes, you"re under.
讨论

如果希望能匹配终端的大小的话,我们可以使用os.get_terminal_size()来得到终端的宽度,然后传给width

>>> textwrap.fill(s, width=os.get_terminal_size().columns)

此外,当我们需要格式化的次数很多时,更高效的方法是先创建一个TextWrapper对象,设置好widthinitial_indent等等参数,然后再调用fill或者wrap方法

>>> wrap = textwrap.TextWrapper(width=60, initial_indent="    ")
>>> print(wrap.fill(s))
    Look into my eyes, look into my eyes, the eyes, the
eyes, the eyes, not around the eyes, don"t look around the
eyes, look into my eyes, you"re under.

关于TextWrapper的其他参数见:

https://docs.python.org/3/lib...

来源

Python Cookbook

关注

欢迎关注我的微信公众号:python每日一练

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/41538.html

相关文章

  • Python每日一练0003

    摘要:问题在每日一练中介绍了如何一个可迭代对象,使用运算符即可但往往我们遇到的问题是可迭代对象中的数量是不确定的这个时候该如何拿到我们想要的元素,比如我们只需要可迭代对象的第一个或者最后一个元素而已解决方案使用中的运算符例如我们需要拿到一个元组的 问题 在每日一练0001中介绍了如何unpack一个可迭代对象,使用,运算符即可 但往往我们遇到的问题是可迭代对象中的数量是不确定的 这个时候该如...

    happyfish 评论0 收藏0
  • Python每日一练0002

    摘要:问题如何序列化输出元素包含字符串元组的字符串元组好绕举个例子将输出为解决方案容易想到使用函数,但函数要求元素必须都是字符串类型,否则会抛出错误一个比较简单的方法是将给进中,然后再将给进函数,最后指定函数的参数来输出如果想要将结果存储起来,那 问题 如何序列化输出元素包含字符串元组的字符串元组(好绕) 举个例子 >>> zoo1 = (monkey, elephant) >>> zoo2...

    yvonne 评论0 收藏0
  • Python每日一练0024

    摘要:问题如何执行外部命令,如解决方案使用库在之前,使用函数在及之后,使用函数讨论命令的执行默认不需要环境,所以当你使用作为参数时,需要将置位,否则会报错误通常来说对于执行系统命令,我们会想到,但在官方文档中已经建议了使 问题 如何执行外部命令,如ls -l 解决方案 使用subprocess库 在Python 3.5之前,使用subprocess.call()函数 >>> import s...

    wqj97 评论0 收藏0
  • Python每日一练0023

    摘要:问题如何判断一个文件是否存在解决方案这个问题可以分成几类问题如果这里的文件指的是文件或目录,我们可以用方法如果这里的文件指的是普通的文件,我们可以用方法如果这里的文件指的是目录,我们可以用方法并且在之后,可以使用面向对象的方法使用库来判断, 问题 如何判断一个文件是否存在 解决方案 这个问题可以分成几类问题 如果这里的文件指的是文件或目录,我们可以用os.path.exists()方法...

    wuyangnju 评论0 收藏0
  • Python每日一练0020

    摘要:问题你需要执行简单的日期操作,计算两个日期间隔多少天某个日期后的多少天是几月几日转换时间字符串的格式等解决方案使用库中的和类其中类代表一个日期时间,例如年月日点分秒类代表一个日期间隔对于实例,可以直接进行数学运算得到一个实例,也就是两个日 问题 你需要执行简单的日期操作,计算两个日期间隔多少天、某个日期后的多少天是几月几日、转换时间字符串的格式等 解决方案 使用datetime库中的d...

    Berwin 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<