提取特殊字符之间的数据

时间:2019-03-01 11:07:39

标签: regex pandas

df
Out[17]: 
0       (a)[b]<c>
1    (aa)[bb]<cc>
2       (e)[f]<g>
dtype: object

我需要在特殊字符之间提取字符串。

df.str.findall(r'[^[]*\[([^]]*)\]')
Out[16]: 
0     [b]
1    [bb]
2     [f]
dtype: object

使用此方法,我可以在[]之间获取字符串,但无法在(),<>之间提取文本 请帮我解决一下这个。 我需要输出像:

0    (a)    [b]   <c>
1    (aa)   [bb]  <cc>
2    (e)    [f]   <g>

1 个答案:

答案 0 :(得分:0)

df.apply(lambda x: ' '.join(re.findall('(?<=[\W])[a-z]+(?=[\W])',x)))

输出

0       a b c
1    aa bb cc
2       e f g

OR

df.apply(lambda x: ' '.join(re.findall('[\W][a-z]+[\W]',x)))

输出

0       (a) [b] <c>
1    (aa) [bb] <cc>
2       (e) [f] <g>