【问题标题】:How can I extract text from string in python?如何从python中的字符串中提取文本?
【发布时间】:2019-07-03 11:45:58
【问题描述】:

假设我有代码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.']

我不希望使用任何非标准包,因为我希望这个脚本独立于所有内容并且可以离线工作。感谢您的帮助!

【问题讨论】:

  • .分割字符串? --> "Hello my name is bob. I really like pies.".split(".")
  • @Rakesh,并不总是有效。例如:“这个问题被标记为 python-3.x” - 将分为两部分。你可能想要nltk
  • @Austin 如果是这样的话,那么确定这是句子结尾的方法可能是什么
  • 谢谢,现在我将使用@Rakesh 的第一个选项,因为它可以正常工作,但是我会调查nltk,但正如我所说,我会尽量避免使用任何额外的包。跨度>

标签: python-3.x


【解决方案1】:

使用nltk.tokenize

import nltk
sentences = nltk.sent_tokenize(txt) 

这会给你一个句子列表。

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-10-09
        • 2018-05-31
        • 1970-01-01
        • 1970-01-01
        • 2012-02-25
        • 1970-01-01
        相关资源
        最近更新 更多