如何从python中带有方括号的正则表达式输出中提取内容
我有一个Python(2.7)的DF,它有如下列:如何从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.
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'] . 因此,我在同一列中也有多封电子邮件。你能更新你的问题并添加你想要的输出吗?如果有多封电子邮件,则输出为多列?是的,这是更好的选择。如果我的回答有帮助,别忘了。谢谢