这是来自this topic的扩展问题。我想在字符串中搜索全部和部分字符串,如以下关键字系列“w”:
rigour*
*demeanour*
centre*
*arbour
fulfil
这显然意味着我想搜索“严谨”和“严谨”s,en风度和风度s,中心和中心s,harbour和arbour,并实现。所以我的关键字列表是完整字符串和部分字符串的混合。我想对这个数据帧“df”应用搜索:
^{pr2}$到目前为止,我尝试的是:
r = re.compile(r'.*({}).*'.format('|'.join(w.values)), re.IGNORECASE)
然后我构建了一个掩码来过滤数据帧:
mask = [m.group(1) if m else None for m in map(r.search, df['Tweet'])]
要获取关键字为found的新列:
df['keyword'] = mask
我所期望的是以下结果数据帧:
ID;name;keyword
01;rigour;rigour
02;rigours;rigour
03;endemeanour;demeanour
04;endemeanours;demeanour
05;centre;centre
06;centres;centre
07;encentre;None
08;fulfil;fulfil
09;fulfill;None
10;harbour;arbour
11;arbour;arbour
12;harbours;None
这可以使用不带*的w列表。为了运行重新编译功能正常。在
任何帮助都将不胜感激。在
看起来您的输入序列
w
需要调整以用作regex模式,如下所示:注意,regex中的
*
跟在它自己无法工作的东西后面。这意味着接下来的一切都可以重复0次或更多次。还要注意,
fulfil
是fulfill
的一部分,如果您想要严格匹配,则需要告诉regex这一点。例如,通过使用'word separator'-\b
-它将只捕获整个字符串。以下是您的正则表达式可能会给您提供所需结果的外观:
^{pr2}$您的代码可以用pandas
.where
方法进行替换,如下所示:相关问题 更多 >
编程相关推荐