【发布时间】:2017-03-28 16:45:26
【问题描述】:
每当出现终端标点符号('.'、'!'、'?')时,我都会尝试将文本拆分为句子。例如,如果我有以下文字:
认识到耶路撒冷风险投资伙伴开启的不断增加的机会 建立他们的 Cyber Labs 孵化器,为这座城市的许多人提供一个家 有前途的年轻公司。像 EMC 这样的国际公司也 在园区内建立主要中心,为他人带路 关注! 去年六月参观时,公园已经发展到两个 为建造更多建筑而破土的建筑物 不远的未来。这真的是有趣! 你怎么看?
这应该分成5个句子(见上面的粗体字,因为这些词以标点符号结尾)。
这是我的代码:
# split on: '.+'
splitted_article_content = []
# article_content contains all the article's paragraphs
for element in article_content:
splitted_article_content = splitted_article_content +re.split(".(?='.'+)", element)
# split on: '?+'
splitted_article_content_2 = []
for element in splitted_article_content:
splitted_article_content_2 = splitted_article_content_2 + re.split(".(?='?'+)", element)
# split on: '!+'
splitted_article_content_3 = []
for element in splitted_article_content_2:
splitted_article_content_3 = splitted_article_content_3 + re.split(".(?='!'+)", element)
我的问题是,是否有任何其他有效的方法来执行以下操作,不使用任何外部库?
感谢大家的帮助。
【问题讨论】:
-
但是...您没有使用任何外部库,因为
re是 Python 标准库的一部分。 -
你就不能
re.split(r'[\.!?] ', article)吗? -
@RocketHazmat article_content 是段落列表.. split 将在列表中起作用?
-
然后试试:
splitted_article_content = [re.split(r'[\.!?] ', element) for element in article_content]。重点是,您只需要 一个 正则表达式,而不是三个。或者是否有任何特定原因需要将其分成 3 个列表?就像句子以.、?或!结尾有关系吗?
标签: python