如何从python的字符串中提取文本?

时间:2019-07-03 11:45:58

标签: python-3.x

说我有代码txt = "Hello my name is bob. I really like pies.",我将如何分别提取每个句子并将其添加到列表中。我创建了这个凌乱的脚本,它给了我大约一个字符串的许多句子...

sentences = 0
capitals = [
    'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S',
    'T','U','V','W','X','Y','Z'
]
finish_markers = [
    '.','?','!'
]
newTxt = txt.split()
for x in newTxt[1:-1]:
    for caps in capitals:
        if caps in x:
            for fin in finish_markers:
                if fin in newTxt[newTxt.index(x) - 1]:
                    sentences += 1
for caps in capitals:
    if caps in newTxt[0]:
        sentences += 1
print("Sentence count...")
print(sentences)

它正在使用上面提到的txt变量。但是,我现在想提取每个句子并将它们放入列表中,以便最终产品看起来像这样……

['Hello my name is bob.','I really like pies.']

我不希望使用任何非标准软件包,因为我希望此脚本独立于一切和脱机工作。谢谢您的帮助!

3 个答案:

答案 0 :(得分:0)

使用nltk.tokenize

import nltk
sentences = nltk.sent_tokenize(txt) 

这将为您提供一个句子列表。

答案 1 :(得分:0)

您可以对所有结尾的chars(“。”,“?”,“!”)使用正则表达式,然后将其拆分为不同的字符串。

答案 2 :(得分:0)

您正在尝试将字符串拆分为句子,使用正则表达式或字符串函数处理很难做到这一点。对于您的用例,我建议使用NLTK之类的NLP库。然后,看看这个Tokenize a paragraph into sentence and then into words in NLTK