在python中如何从带有方括号的regex输出中提取内容

2024-10-04 05:29:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个Python的(2.7)Pandas DF,它的列如下所示:

       email
['jsaw@yahoo.com']
['jfsjhj@yahoo.com']
['jwrk@yahoo.com']
['rankw@yahoo.com']

我想从它提取电子邮件没有方括号和单引号。输出应该如下所示:

^{pr2}$

我试过这个答案的建议:Replace all occurrences of a string in a pandas dataframe (Python)。但它不起作用。任何帮助都将不胜感激。在

编辑: 如果我有超过1维的数组怎么办。比如:

          email
  ['jsaw@yahoo.com']
  ['jfsjhj@yahoo.com']
  ['jwrk@yahoo.com']
  ['rankw@yahoo.com','fsffsnl@gmail.com']
  ['mklcu@yahoo.com','riserk@gmail.com', 'funkdl@yahoo.com']

是否可以在没有方括号和单引号的三个不同列中获得输出。在


Tags: 答案compandasdf电子邮件emailyahoogmail
2条回答

如果值的typestring,则可以使用^{}

print type(df.at[0,'email'])
<type 'str'>

df['email'] = df.email.str.strip("[]'")
print df
              email
0    jsaw@yahoo.com
1  jfsjhj@yahoo.com
2    jwrk@yahoo.com
3   rankw@yahoo.com

如果typelist^{}Series

^{pr2}$

编辑:如果数组中有多个值,则可以使用:

df1 = df['email'].apply(pd.Series).fillna('')
print df1
                  0                  1                 2
0    jsaw@yahoo.com                                     
1  jfsjhj@yahoo.com                                     
2    jwrk@yahoo.com                                     
3   rankw@yahoo.com  fsffsnl@gmail.com                  
4   mklcu@yahoo.com   riserk@gmail.com  funkdl@yahoo.com

试试这个:

from re import findall
s = "['rankw@yahoo.com']"                     
m = findall(r"\[([A-Za-z0-9@'._]+)\]", s) 
print(m[0].replace("'",''))

相关问题 更多 >