python - 如何将字符串拆分为具有给定长度但不破坏句子的子字符串?
问题描述
我有一个带有大文本的字符串,需要将其拆分为长度 <= 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."
而且我希望这可以与英语和俄语一起使用。
如何做到这一点?
解决方案
我找不到任何内置的,所以这是一个开始。您可以通过检查前后移动句子的位置来使其更智能,而不是仅仅在之前。长度包括空格,因为我天真地拆分而不是使用正则表达式或其他东西。
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
排长队的速度很慢,但它确实有效。
推荐阅读
- azure - Azure 持久功能 用于高吞吐量/低延迟?
- python - pip install AttributeError: _DistInfoDistribution__dep_map
- python - Python NetworkX 将 Panda 的整数转换为浮点数
- python-3.x - Python Tkinter 菜单栏未显示
- aws-xray - aws xray:跟踪中缺少 sql 查询和 django 用户
- r - R不会将直方图编织为PDF
- javascript - 在javascript中获取函数声明的路径
- python - 使用 for 循环的函数,在达到特定数字之前对列表中的数字求和
- r - 重复多个列元素可变次数
- react-native - React Native 渲染组件