我想使用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循环,并在匹配关键字时提取句子索引。
谢谢。
答案 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))