每隔n个字符插入一个换行符,使用Python重置换行符上的n

2024-10-04 09:22:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我从Jira restapi得到一个文本块。我需要每150个字符插入一个换行符。你知道吗

如果第150个字符不是空格,请将换行符插入最后一个空格,如果该文本包含换行符,则应重置该计数。你知道吗

我用regex尝试过,但是它删除/忽略了文本中已经存在的换行符,并在单词中间插入了换行符

featureText = re.sub("(.{150})", "\\1\n", featureText, 0, re.DOTALL)
#featureText contains some text from the api get request

为了简单起见,假设我想每10个字符添加一个换行符。我有文本

My Television is broken
and that sucks

我现在得到

My Televis
ion is bro
ken and th
at sucks

我想要的是

My
Television
is broken
and that
sucks

编辑:澄清我的问题,让它成为现实世界的失败者。 只有这个例子用了10个字符,我真正的问题用了150个字符,所以不要担心把一个单词切成两半,我猜不会有任何150个字符长的单词。你知道吗


Tags: and文本rerestapithatismyjira
2条回答

我会像这样使用textwrap:

import textwrap

example = textwrap.dedent("""\
    My Television is broken
    and that sucks""")

print '\n'.join(l for line in example.splitlines() 
                  for l in textwrap.wrap(line, width=10))

这将导致:

My
Television
is broken
and that
sucks

更好的例子是:

example = textwrap.dedent("""\
    My Television is
    and that sucks""")

结果是:

My
Television
is
and that
sucks

这更好地表明原始行是单独包装的。你知道吗

比如:

def split_text(text, n):
    for line in text.splitlines():
        while len(line) > n:
           x, line = line[:n], line[n:]
           yield x
        yield line

text = "abcdefghijklmnopqr\nstuvwxyz"

for line in split_text(text, 10):
    print(line)

印刷品:

abcdefghij
klmnopqr
stuvwxyz

相关问题 更多 >