Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从python中带有方括号的正则表达式输出中提取内容_Python_Regex_Pandas_Replace_Dataframe - Fatal编程技术网

如何从python中带有方括号的正则表达式输出中提取内容

如何从python中带有方括号的正则表达式输出中提取内容,python,regex,pandas,replace,dataframe,Python,Regex,Pandas,Replace,Dataframe,我有一个Python(2.7)的DF,它有如下列: email ['jsaw@yahoo.com'] ['jfsjhj@yahoo.com'] ['jwrk@yahoo.com'] ['rankw@yahoo.com'] email jsaw@yahoo.com jfsjhj@yahoo.com jwrk@yahoo.com rankw@yahoo.com 我想从中提取没有方括号和单引号的电子邮件。输出应如下所示: email ['jsaw@yahoo.

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

       email
['jsaw@yahoo.com']
['jfsjhj@yahoo.com']
['jwrk@yahoo.com']
['rankw@yahoo.com']
     email
jsaw@yahoo.com
jfsjhj@yahoo.com
jwrk@yahoo.com
rankw@yahoo.com
我想从中提取没有方括号和单引号的电子邮件。输出应如下所示:

       email
['jsaw@yahoo.com']
['jfsjhj@yahoo.com']
['jwrk@yahoo.com']
['rankw@yahoo.com']
     email
jsaw@yahoo.com
jfsjhj@yahoo.com
jwrk@yahoo.com
rankw@yahoo.com
我尝试了以下答案中的建议:。但它不起作用。任何帮助都将不胜感激

编辑: 如果我有一个以上维度的数组呢。比如:

          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']
是否可以在没有方括号和单引号的情况下在三个不同的列中获得输出。

如果值的
类型
字符串
,则可以使用:

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
编辑:如果数组中有多个值,则可以使用:

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("'",''))

谢谢你的快速回复。。我的专栏的类型是。我试图将其转换为列表,然后应用series方法,但它给出了一个错误“ValueError:无法将输入数组从形状(2,6)广播到形状(6)”。。任何建议都将不胜感激。一个问题-您的dataframe中有多少列包含真实数据?我总共有17列,但只有三列是数组类型。。作为数组的电子邮件列可以有一维、二维或任意维数组。。该列看起来像:email['jsaw@yahoo.com'] ['jfsjhj@yahoo.com'] ['jwrk@yahoo.com'] ['rankw@yahoo.com'] ['njdfh@yahoo.com','njdfh@gmail.com'] . 因此,我在同一列中也有多封电子邮件。你能更新你的问题并添加你想要的输出吗?如果有多封电子邮件,则输出为多列?是的,这是更好的选择。如果我的回答有帮助,别忘了。谢谢