在python pandas中的字符串中返回正则表达式的多个匹配项

时间:2015-11-04 17:12:29

标签: python regex pandas

我正在尝试提取"><"之间的所有匹配项在一个字符串

以下代码仅返回字符串中的第一个匹配项。

In:    
import pandas as pd
import re
df = pd.Series(['<option value="85">APOE</option><option value="636">PICALM1<'])
reg = '(>([A-Z])\w+<)'
df2 = df.str.extract(reg)
print df2

Out:
    0   1
0   >APOE<  A

我想返回&#34; APOE&#34;和&#34; PICALM1&#34;而不只是&#34; APOE&#34;

感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

不需要大熊猫。

df = '<option value="85">APOE</option><option value="636">PICALM1<'
reg = '>([A-Z][^<]+)<'
print re.findall(reg,df)
['APOE', 'PICALM1']

使用正则表达式解析HTML可能不是最好的主意,您是否考虑过使用BeautifulSoup?

答案 1 :(得分:0)

import re
import pandas as pd
df['new_col'] =  df['old_col'].str.findall(r'>([A-Z][^<]+)<')

这会将所有匹配项作为列表存储在dataframe的new_col中。