regex - pandas python 中字符串的精确匹配

标签 regex excel python-2.7 pandas

我在数据框中有一列,例如 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 但我需要一些东西来完全匹配

最佳答案

你可以简单地使用==

string_a == string_b

如果两个字符串相等,则应返回 True。但这并不能解决您的问题。

编辑2:您应该使用 len(df1.index) 而不是 len(df1.columns)。事实上,len(df1.columns) 会给你列数,而不是行数。

编辑3:阅读您的第二篇文章后,我明白了您的问题。您提出的解决方案可能会导致一些错误。 例如,如果您有:

ls=['tathagata.kar@ae.com','a.kar@ae.com', 'tathagata.kar@ae.co']

第一个和第三个元素将匹配 str.contains(r'(?:\s|^|Ei:|EI:|EI-)'+ls[i]) 这是一种不受欢迎的行为。

您可以在字符串末尾添加检查:str.contains(r'(?:\s|^|Ei:|EI:|EI-)'+ls[i]+r'(?:\s|$)')

像这样:

for i in range(len(ls)):
  df1 = df[df['A'].str.contains(r'(?:\s|^|Ei:|EI:|EI-)'+ls[i]+r'(?:\s|$)')]
  if len(df1.index != 0):
      print (ls[i])

(如果使用 python 2.7,请删除“print”中的括号)

关于regex - pandas python 中字符串的精确匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44254816/

相关文章:

python - 接收作为空白文件的电子邮件附件

python - 如何在文件中搜索以某种格式的数字开头的所有文本行并将它们移动到新行

python - 用 Python 解析 XML 文件并在每个列表元素中获取字母 'u'

xml - 如何提高 VBA 中 XML 解析的速度

excel - 在excel中检查范围是否包含> 0的值

excel - 在 Excel 中寻找更好的公式来计算重复项

JavaScript - 根据 Twitter 规则进行简单的字符计数

javascript - 正则表达式从缩小中排除 npm 库

python - 如何通过使用正则表达式来区分带有URL的域名地址?

Django 1.10 : "new style" middleware equivalent of `process_request()`