【发布时间】:2017-10-30 11:46:09
【问题描述】:
我在数据框中有一列 ex df:
A
0 Good to 1. Good communication EI : tathagata.kar@ae.com
1 SAP ECC Project System EI: ram.vaddadi@ae.com
2 EI : ravikumar.swarna Role:SSE Minimum Skill
我有一个字符串列表
ls=['tathagata.kar@ae.com','a.kar@ae.com']
现在如果我想过滤掉
for i in range(len(ls)):
df1=df[df['A'].str.contains(ls[i])
if len(df1.columns!=0):
print ls[i]
我得到了输出
tathagata.kar@ae.com
a.kar@ae.com
但我只需要tathagata.kar@ae.com
如何实现? 如您所见,我已经尝试过 str.contains 但我需要一些东西来完全匹配
【问题讨论】:
-
在电子邮件地址前面添加一个空格(所以在
ls中)?因为 Python 是对的,a.kar@ae.com在你的 df 的第一项中 -
是的,我同意。我尝试做不同的事情,例如 str.contains(r'(?:\s|^)%s(?:\s|$)'%ls[i]) Where (Only the word在 ^(表示空格)和 $(表示字符串结尾)之间需要打印。但我的结果是空数据框。
-
使用正则表达式 r'\s\w+'+ls[i],这个正则表达式匹配一个空格,然后是字符,然后是你的字符串。如果这有助于将其更新为答案
-
@IsaacDj 我尝试使用 str.contains(r'\s\w+'+ls[i]) 但我得到了 a.kar@ ae.com 作为我的输出,而不是相反。
-
尝试解析 ls[i],在正则表达式的情况下,它需要将句点反斜杠:r'\s\w+'+ls[i].replace('.',r'\ .')
标签: regex excel python-2.7 pandas