我有一个很长的字符串,我想把它分成几段,最多X个字符.但是,只有在一个空格处(如果字符串中的某个单词长于X个字符,只需将其放入自己的片段中).

我都不知道该怎么做...肾盂的

伪代码:

declare a list
while still some string left:
   take the fist X chars of the string
   find the last space in that
   write everything before the space to a new list entry
   delete everything to the left of the space

在我编写代码之前,是否有一些python模块可以帮助我(我不认为pprint可以)?

推荐答案

使用textwrap模块(连字符也会断开):

import textwrap
lines = textwrap.wrap(text, width, break_long_words=False)

如果你想自己编写代码,我会这样做:首先,将文本拆分为单词.从一行中的第一个单词开始,重复剩余的单词.如果下一个单词适合当前行,则添加它,否则完成当前行,并将该单词用作下一行的第一个单词.重复,直到所有单词都用光.

以下是一些代码:

text = "hello, this is some text to break up, with some reeeeeeeeeaaaaaaally long words."
n = 16

words = iter(text.split())
lines, current = [], next(words)
for word in words:
    if len(current) + 1 + len(word) > n:
        lines.append(current)
        current = word
    else:
        current += " " + word
lines.append(current)

Python-3.x相关问答推荐

Pandas—在特定列上比较两行双框,并根据特定条件保留其中一行?

如何从Django连接到Neo4J s AuraDB(免费层)?'

是否可以使用参数对Flask重定向?

泛型类型的参数的静态类型

在BaseHTTPRequestHandler中填充和返回列表

在Python代码中包含NAN值时,以两个矩阵计算RMSE

使用 iloc 或 loc 对多列进行过滤

如何获取自定义文件上传路径的对象ID?

SQL Server 2022和Python3.10脚本错误

基于组/ID从原始数据框中创建两个子数据框

平移数组

我正在使用 python 线程,当查询 mysql 时,代码似乎在运行并保持在无限循环中,没有返回任何错误

使用 Python 在特定组的列中设置上限

Semaphore信号量 Python 的工作原理

django.core.exceptions.ImproperlyConfigured

如何使用pandas python获取数据框中每列的最大长度

如何判断一个字符串是否包含有效的 Python 代码

全局捕获快速 api 中的异常

如何在元素列表中找到最大的数字,可能是非唯一的?

如何将numpy数组图像转换为字节?