gpt4 book ai didi

python - 如果字符串与列表中的字符串匹配,如何从句子中删除字符串

转载 作者:行者123 更新时间:2023-12-03 15:54:27 24 4
gpt4 key购买 nike

我有一个 pandas.Series用这样的句子:

0    mi sobrino carlos bajó conmigo el lunes       
1 juan antonio es un tio guay
2 voy al cine con ramón
3 pepe el panadero siempre se porta bien conmigo
4 martha me hace feliz todos los días
另一方面,我有一个像这样的名字和姓氏列表: l = ['juan', 'antonio', 'esther', 'josefa', 'mariano', 'cristina', 'carlos']我想将系列中的句子与列表中的名称相匹配。实际数据比这个例子大得多,所以我认为系列和列表之间的元素比较不会有效,所以我创建了一个包含名称列表中所有字符串的大字符串,如下所示: '|'.join(l)我尝试创建一个 bool 掩码,稍后允许我通过 true 或 false 值索引包含名称列表中名称的句子,如下所示:
series.apply(lambda x: x in '|'.join(l))
但它返回:
0    False
1 False
2 False
3 False
4 False
这显然不行。
我也尝试使用 str.contains()但它的行为并不像我预期的那样,因为此方法将查看名称列表中是否存在系列中的任何子字符串,而这不是我需要的(即我需要完全匹配)。
你能在这里指出我正确的方向吗?
非常感谢您提前

最佳答案

如果需要精确匹配,您可以使用单词边界:

series.str.contains('|'.join(rf"\b{x}\b" for x in l))
对于按列表删除值是使用生成器理解通过拆分文本仅过滤不匹配的值:
series = series.apply(lambda x: ' '.join(y for y in x.split() if y not in l))
print (series)

0 mi sobrino bajó conmigo el lunes
1 es un tio guay
2 voy al cine con ramón
3 pepe el panadero siempre se porta bien conmigo
4 martha me hace feliz todos los días

关于python - 如果字符串与列表中的字符串匹配,如何从句子中删除字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63032396/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com