簡體   English   中英

Python 找到關鍵字后提取句子

[英]Python extract sentence after a keyword is found

我有一個基於我提取的一些文本和關鍵字列表的字符串。 我想遍歷字符串並僅提取找到關鍵字的句子之后的句子,並刪除句號。

細繩

'Test string. removing data. keyword extraction. data number. 11123. final answer.'

這是我的關鍵短語列表:

lst= ['Test string', 'data number']

所需的 output:

['removing data', '11123']

請有人幫我指出正確的方向嗎? 謝謝

這是我的建議:

s='Test string. removing data. keyword extraction. data number. 11123. final answer.'

temp = [i.strip() for i in s.split('.')]

res = [temp[temp.index(i)+1] for i in lst]

print(res)

Output:

['removing data', '11123']

它能做什么:

temp = [i.strip() for i in s.split('.')]

s.split('.')將您的字符串轉換為字符串列表,按點分隔。 所以你把每個句子分開:

['Test string', ' removing data', ' keyword extraction', ' data number', ' 11123', ' final answer', '']

這被放在一個列表理解中,它從上面的列表中創建一個帶有剝離值的新列表( i.strip()刪除前導和尾隨空格)。 所以你最終得到:

['Test string', 'removing data', 'keyword extraction', 'data number', '11123', 'final answer', '']

在最后一步有兩件有趣的事情:

  1. 我們使用list.index()方法,它為我們提供了搜索項的索引。 比獲得下一個元素更容易。
  2. 當你有一個大字符串和很少的搜索項時,這很快,但你應該小心,因為如果你正在搜索一個不存在的項目,它會失敗。

直截了當更安全:

res = [temp[idx+1] for idx, val in enumerate(temp) if val in lst]

有關枚舉的更多信息,請查看文檔

這是一個解決方案。 本質上,您根據點和空格拆分輸入以制作列表。 然后你遍歷看看它是否存在。 如果是,則將下一個元素添加到 output 列表中。

代碼:

input = 'Test string. removing data. keyword extraction. data number. 11123. final answer.'
input_as_list = input.split('. ')
lst = ['Test string', 'data number']
result = []
for i in range(0, len(input_as_list)):
    for item in lst:
        if input_as_list [i] == item :
            result.append(input_as_list [i+1])
print(result)

結果:

['removing data', '11123']

使用list comprehensionre.splitenumerate

import re
my_str = 'Test string. removing data. keyword extraction. data number. 11123. final answer.'
key_phrases = ['Test string', 'data number']
my_str_phrases = re.split(r'[.]\s*', my_str)
print([my_str_phrases[idx + 1] for idx, item in enumerate(my_str_phrases) if item in key_phrases])
# ['removing data', '11123']

筆記:
[.]\s* :文字點(需要是字符 class []的一部分或像這樣轉義:.),后跟 0 次或多次出現的空格。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM