首页 > 解决方案 > 如何将字符串拆分为具有给定长度但不破坏句子的子字符串?

问题描述

我有一个带有大文本的字符串,需要将其拆分为长度 <= N 个字符的多个子字符串(尽可能接近 N;N 总是大于最大的句子),但我也不需要打断句子.

例如,如果我有 N = 80 并给出文本:

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer in tellus quam. Nam sit amet iaculis lacus, non sagittis nulla. Nam blandit quam eget velit maximus, eu consectetur sapien sodales. Etiam efficitur blandit arcu, quis rhoncus mauris elementum vel.

我想获取字符串列表:

"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer in tellus quam."
"Nam sit amet iaculis lacus, non sagittis nulla."
"Nam blandit quam eget velit maximus, eu consectetur sapien sodales."
"Etiam efficitur blandit arcu, quis rhoncus mauris elementum vel."

而且我希望这可以与英语和俄语一起使用。

如何做到这一点?

标签: pythonpython-3.xtext

解决方案


我找不到任何内置的,所以这是一个开始。您可以通过检查前后移动句子的位置来使其更智能,而不是仅仅在之前。长度包括空格,因为我天真地拆分而不是使用正则表达式或其他东西。

def get_sentences(text, min_length):
    sentences = (sentence + ". "
                 for sentence in text.split(". "))
    current_line = ""
    for sentence in sentences:
        if len(current_line >= min_length):
            yield current_line
            current_line = sentence
        else:
            current_line += sentence
    yield current_line

排长队的速度很慢,但它确实有效。


推荐阅读