【问题标题】:Split string every n characters but without splitting a word [duplicate]每n个字符拆分字符串,但不拆分单词[重复]
【发布时间】:2019-11-01 09:05:50
【问题描述】:

假设我在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 个字符会怎样?
  • @shash678,谢谢您的提问。我在我编辑的帖子中回答了这个问题。
  • textwrap.wrap(orig_string, 10) 几乎做你想做的;唯一的区别是删除了原始字符串被拆分的空间,返回['I am a', 'string in', 'python']
  • @chepner,是的,我不一定关心这些特定的空格。
  • @PoeteMaudit:如果你真的关心空格,我认为接受的答案不能回答这个问题。

标签: python python-3.x text split tokenize


【解决方案1】:

你可以使用内置的textwrap.wrap函数(doc):

orig_string = 'I am a string in python'

from textwrap import wrap

print(wrap(orig_string, 10))

打印:

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

【讨论】:

  • 当 2 个人已经在 cmets 中提出这个建议时,写一个答案是否是好的礼节
  • 我没有检查 cmets。它刚刚从我的脑海中弹出(因为我每天都在使用它)
  • 我在 cmets 中写了它,因为我现在无法写出完整的答案。所以对我来说没关系
  • 我准备好不介意,只要我们最终得到一个高质量的答案
  • @Chris_Rands 我不认为这是礼仪的失误。答案属于可以投票和选择的答案部分。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-03-17
  • 1970-01-01
  • 2017-07-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多