在我的项目中,我有一堆从文件中读入的字符串.当在命令控制台中打印时,它们中的大多数长度超过80个字符,并环绕在一起,看起来很难看.

我想让Python读取字符串,然后测试其长度是否超过75个字符.如果是,则将字符串拆分为多个字符串,然后在新行上逐个打印.

我try 过修改类似的代码,在设定长度后截断字符串,但只是将字符串丢弃,而不是将其放入新行.

我可以使用哪些方法来实现这一点?

推荐答案

你可以使用textwrap个模块:

>>> import textwrap
>>> strs = "In my project, I have a bunch of strings that are read in from a file. Most of them, when printed in the command console, exceed 80 characters in length and wrap around, looking ugly."
>>> print(textwrap.fill(strs, 20))
In my project, I
have a bunch of
strings that are
read in from a file.
Most of them, when
printed in the
command console,
exceed 80 characters
in length and wrap
around, looking
ugly.

helptextwrap.fill:

>>> textwrap.fill?

Definition: textwrap.fill(text, width=70, **kwargs)
Docstring:
Fill a single paragraph of text, returning a new string.

Reformat the single paragraph in 'text' to fit in lines of no more
than 'width' columns, and return a new string containing the entire
wrapped paragraph.  As with wrap(), tabs are expanded and other
whitespace characters converted to space.  See TextWrapper class for
available keyword args to customize wrapping behaviour.

如果不想将一行合并为另一行,请使用regex:

import re


strs = """In my project, I have a bunch of strings that are.
Read in from a file.
Most of them, when printed in the command console, exceed 80.
Characters in length and wrap around, looking ugly."""

print('\n'.join(line.strip() for line in re.findall(r'.{1,40}(?:\s+|$)', strs)))

# Reading a single line at once:
for x in strs.splitlines():
    print '\n'.join(line.strip() for line in re.findall(r'.{1,40}(?:\s+|$)', x))

output:

In my project, I have a bunch of strings
that are.
Read in from a file.
Most of them, when printed in the
command console, exceed 80.
Characters in length and wrap around,
looking ugly.

Python-3.x相关问答推荐

Django Rest框架-ListSYS APIView-如何过滤+聚合+在dev perform_create内创建多个对象

根据其他数据框架的列顺序从数据框架中进行 Select

SQL Server 2022和Python3.10脚本错误

使用Python按照其组/ID的紧密值的递增顺序映射数据框的两列

如何立即从asyncio.Task获取异常?

将自动文本转换为 DataFrame

拆分列表的元素并将拆分后的元素包含到列表中

在新数据帧上自动提取两个字符串 python 之间的相等性

将 pandas Timestamp() 转换为 datetime.datetime() 以支持 peewee DateTimeField()

删除Pandas 数据框行不起作用

如何融化具有自定义名称的Pandas

为什么我不能通过索引获取字典键?

例外:使用 Pyinstaller 时找不到 PyQt5 插件目录,尽管 PyQt5 甚至没有被使用

在气流中运行 DAG 时出现处理信号:ttou消息

将变量传递给 Google Cloud 函数

如何注释一个以另一个函数作为参数的函数?

发送Electron邮件时的 MIMEText UTF-8 编码问题

通过多个键对字典列表进行分组和聚合

Python:&= 运算符

如何使用请求发送带有标头的 PATCH 请求