每n个字符拆分字符串,但不要拆分单词

9

假设我在Python中有以下代码:

orig_string = 'I am a string in python'

假设我想将这个字符串每10个字符分割一次,但不要分割单词,那么我想得到这个结果:

strings = ['I am a ', 'string in ', 'python']

或者这个(在分割处没有空格):
strings = ['I am a', 'string in', 'python']

因此,在每种情况下,拆分应该恰好在原本会被拆分的单词之前进行。
否则,我将得到这样的结果:
false_strings = ['I am a str', 'ing in pyt', 'hon']

仅提及我的情况,我想每15k个字符执行一次此操作,但我在上面给出的示例是每10个字符,以便可以在此处简洁地编写。

最有效的方法是什么?


如果一个单词超过10个字符,会发生什么? - Sash Sinha
1
@shash678,谢谢你的问题。我在我的编辑帖子中回答了它。 - Outcast
1
textwrap.wrap(orig_string, 10) 几乎 可以实现你想要的效果;唯一的区别是它会移除原始字符串被分割的空格,返回 ['I am a', 'string in', 'python'] - chepner
@PoeteMaudit:如果你真的关心空格,我不认为被接受的答案回答了这个问题。 - Austin
@Austin 谢谢您的评论,但我实际上认为我没有。 - Outcast
显示剩余4条评论
1个回答

9
你可以使用内置的textwrap.wrap函数(文档):
orig_string = 'I am a string in python'

from textwrap import wrap

print(wrap(orig_string, 10))

输出:

['I am a', 'string in', 'python']

4
当两个人已经在评论中提出了这个问题时,写一个回答是否符合良好的礼节? - Chris_Rands
1
我在注释中写了它,因为现在我无法写出完整的答案。所以对我来说没问题。 - Olivier Melançon
2
只要我们最终得到一个高质量的答案,我并不介意。 - Olivier Melançon
4
我认为这不是礼仪上的错误。回答应该放在答案区,这样可以被投票和选择。 - Mark
@Chris_Rands:将答案作为实际答案发布非常重要,即使评论可能已经提到了它们。我是通过搜索引擎来到这里的。无论是SO还是Google搜索引擎都只会找到问题和答案,它们会忽略评论。如果您搜索“[python] split n characters textwrap”,它会找到答案。(哪个用户应该获得声望的礼仪是另一个问题。) - smci
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接