[英]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', '']
在最后一步有兩件有趣的事情:
直截了當更安全:
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 comprehension 、 re.split
和enumerate
:
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.