数据框中的列包含我要匹配的关键字
我想检查每一列是否包含任何关键字。如果是,请打印它们
尝试如下:
import pandas as pd
import re
Keywords = [
"Caden(S, A)",
"Caden(a",
"Caden(.A))",
"Caden.Q",
"Caden.K",
"Caden"
]
data = {'People' : ["Caden(S, A) Charlotte.A, Caden.K;", "Emily.P Ethan.B; Caden(a", "Grayson.Q, Lily; Caden(.A))", "Mason, Emily.Q Noah.B; Caden.Q - Riley.P"]}
df = pd.DataFrame(data)
pat = '|'.join(r"\b{}\b".format(x) for x in Keywords)
df["found"] = df['People'].str.findall(pat).str.join('; ')
print df["found"]
它返回Nan。我想挑战在于关键词中的空格和括号
获得理想输出的正确方法是什么?多谢各位
Caden(S, A); Caden.K
Caden(a
Caden(.A))
Caden.Q
嘿,我不知道这个解决方案是否是最优的,但它是有效的。我刚刚用8替换了点,用9替换了“('6')”,不知道为什么str.findall会忽略这些字符
{8,6,9}与{'.','('.',')}之间的一种双射
然后应用你的函数
最后一步返回{'.','('.',')}
瞧
由于您不需要查找每个关键字,但是如果它们重叠,则可以使用带有
findall
方法的正则表达式来查找最长的关键字这里的要点是,首先需要按长度降序对关键字进行排序(因为关键字中有空格),然后需要转义这些值,因为它们包含特殊字符,然后必须修改单词边界以使用明确的单词边界、
(?<!\w)
和(?!\w)
(注意\b
是上下文相关的)使用
见online Python test:
输出
相关问题 更多 >
编程相关推荐