数据框中的列包含要匹配的关键字。你知道吗
我想检查每一列是否包含任何关键字。如果是,打印出来。你知道吗
尝试如下:
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"]
它返回南。我想挑战在于关键字中的空格和括号。你知道吗
获得理想输出的正确方法是什么?非常感谢。你知道吗
Caden(S, A); Caden.K
Caden(a
Caden(.A))
Caden.Q
因为您不需要查找每个关键字,但是最长的关键字如果重叠,您可以使用带有
findall
方法的正则表达式。你知道吗这里的要点是,首先需要按长度降序排列关键字(因为关键字中有空格),然后需要转义这些值,因为它们包含特殊字符,然后必须修改单词边界以使用明确的单词边界、
(?<!\w)
和(?!\w)
(注意\b
是上下文)依赖)。你知道吗使用
参见online Python test:
输出
嘿,我不知道这个解决方案是否是最优的,但它是有效的。我刚才用8替换了点,用6替换了“(”,用9替换了“)”,不知道为什么这些字符被忽略了芬德尔街? 你知道吗
一种介于{8,6,9}和{.','(',')}之间的双射
然后应用你的函数
最后一步返回{“.”、“(”、“)}
瞧
相关问题 更多 >
编程相关推荐