Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用python提取匹配关键字的句子索引_Python - Fatal编程技术网

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

使用python提取匹配关键字的句子索引,python,Python,我想使用python正则表达式提取文本中匹配关键字的句子的索引号。 关键词是“我可以帮你” 文本数据是 关键字=[“我可以帮你”] str1=[nv707g]:代理“nv707g”进入聊天室(以桑德拉的身份)*[nv707g]:您好。我叫桑德拉。我能为您效劳吗*[nv707g]:当然,请不要担心。我可以帮你解决这个问题。***[nv707g]:能给我一个联系电话吗?这样我们就可以联系到你了 str2=[ta250h]:代理“ta250h”进入聊天室(以史蒂夫的身份)*[ta250h]:您好。我叫

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

关键字=[“我可以帮你”]

str1=[nv707g]:代理“nv707g”进入聊天室(以桑德拉的身份)*[nv707g]:您好。我叫桑德拉。我能为您效劳吗*[nv707g]:当然,请不要担心。我可以帮你解决这个问题。***[nv707g]:能给我一个联系电话吗?这样我们就可以联系到你了

str2=[ta250h]:代理“ta250h”进入聊天室(以史蒂夫的身份)*[ta250h]:您好。我叫史蒂夫。我能为您效劳吗*[ta250h]:我可以帮你

str3=*[virtualAssistant.nina]:嗯,你能重新表述一下你的问题吗?虚拟助理最能理解简单的问题[virtualAssistant.nina]:您现在将与您的问题的专家联系[sv0573]:代理“sv0573”进入聊天室(以Rosen的身份)代理“virtualAssistant.nina”退出聊天室[sv0573]:您好,我是Rosen。今天我有幸与谁交谈[sv0573]:很抱歉知道您的电子邮件有问题*[sv0573]:对于给您带来的不便,我深表歉意。我可以帮你解决这个问题。***[sv0573]:我可以有一个联系电话号码,以便我们可以通过电话或短信与您联系,了解您的AT&T服务信息吗

str4=[sm0036]:代理“sm0036”进入聊天室(以肖恩的身份)*[sm0036]:您好。我叫肖恩。我能为您效劳吗[sm0036]:我可以看到您正在键入我正在等待您的答复[sm0036]:对于给您带来的不便,我深表歉意。我可以帮你*[sm0036]:我将了解发生了什么,并将帮助您解决此问题

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


提前感谢。

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

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
如果关键字不在对话中,则返回None

编辑:看到*并没有清晰地出现在所有字符串中以表示新的说话人,您可能应该使用“[”来分割字符串

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))

我对此感到头晕目眩…你能重新表述你的问题吗?Stack Overflower我理解。如果你想要确切的句子,为什么不使用
index
而不是regex?例如
“当然,请不要担心。我可以帮你。”.index(“我可以帮你”)
您尝试了什么?很抱歉,这不是一项代码编写服务。请您自己做一些努力。