我正在尝试提取"><"之间的所有匹配项在一个字符串
以下代码仅返回字符串中的第一个匹配项。
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;
感谢您的帮助!
答案 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中。