提取使用python匹配关键字的句子的索引

时间:2018-12-04 08:03:41

标签: python

我想使用python正则表达式提取文本中与关键字匹配的句子的索引号。 关键字是“我可以帮助您” 文本数据是

keyword = [“我可以帮助您”]

str1 = [nv707g]:代理“ nv707g”进入聊天状态(以Sandra身份) * [nv707g]:嗨。我叫桑德拉。我怎么帮你? * [nv707g]:好的,请不要担心。我可以帮你。 *** [nv707g]:能给我一个联系电话,以便我们与您联系吗。

str2 = [ta250h]:座席'ta250h'进入聊天(如史蒂夫一样) * [ta250h]:嗨。我叫史蒂夫。我怎么帮你? * [ta250h]:我可以帮助您。

str3 = * [virtualAssistant.nina]:嗯。你能改一下你的问题吗?虚拟助手最能理解简单的问题。 [virtualAssistant.nina]:现在,您将与问题专家联系。 [sv0573]:代理'sv0573'进入聊天(如Rosen) 代理'virtualAssistant.nina'退出聊天 [sv0573]:您好,我叫罗森。今天我很高兴与谁交谈? [sv0573]:Jerone,您好。 [sv0573]:很抱歉得知您的电子邮件有问题。 * [sv0573]:给您带来的不便,我们深表歉意。我可以帮你。 *** [sv0573]:我可以提供一个联系电话,以便我们通过电话或短信与您联系有关AT&T服务的信息吗?

str4 = [sm0036]:座席'sm0036'进入聊天室(以Sean身份) * [sm0036]:嗨。我叫肖恩。我怎么帮你? [sm0036]:我看到您正在输入我正在等待您的回复。 [sm0036]:给您带来的不便,我们深表歉意。我可以帮你。 * [sm0036]:我会找出正在发生的情况,并将帮助您解决此问题。

对每个字符串使用for循环,并在匹配关键字时提取句子索引。

谢谢。

1 个答案:

答案 0 :(得分:1)

将您的对话转换为列表,在*处分割字符串,然后解析关键字的元素并返回包含关键字的元素的索引:

str1="[nv707g]: Agent 'nv707g' enters chat (as Sandra) * [nv707g]: Hi. My name is Sandra. How can I help you? * [nv707g]: Sure, please don't worry. I can help you with that. *** [nv707g]: Can I have a contact number so that we can reach you."

keyword = "I can help you with that"

a = str1.strip().split('[')

def f(L, key_word):
    for i in L: 
        if key_word in i: 
            return L.index(i)

print f(a, keyword)

>>> 2

如果关键字不在对话中,则不返回任何值。

编辑:看到*不会清晰地出现在所有字符串中以表示新的讲话者,您可能应该使用“ [”拆分字符串。

def f_new(convo, key_word, splitter = "["): 
    c = [e for e in convo.strip().split('[') if e != '']
    for i in c:
        if key_word in i: 
            return c.index(i)

现在默认的分隔符为“ [”,但是您可以在调用函数时随意更改它。

关于您的评论,这里有一个指针:干净定义所有字符串并将它们放在列表中

convos = [str1, str2, str3, str4]

然后简单地遍历它们:

for i in convos: 
    print(f_new(i, keyword))
相关问题