正则表达式返回Python中的列表?

时间:2014-05-02 02:21:55

标签: python regex

所以,我想用大量的HTML代码在Python中创建一个列表,但是我试图根据HTML标记将其拆分。我不熟悉正则表达式,所以我不知道如何解决这个问题。例如,我们说我有这段HT​​ML代码:

<option value="674"> Example text here </option><option value="673"> Example text here</option><option value="672"> Example text here </option>

我希望能够将此代码(尽管它的版本大得多)保存到字符串中,然后使用函数返回如下列表:

list = ["Example text here", "Example text here", "Example text here"]

无论如何我可以这样做?

2 个答案:

答案 0 :(得分:1)

我同意@ roippi的评论,请使用HTML解析器。但是,如果您真的想使用正则表达式,则可以使用以下内容:

import re

s = '<option value="674"> Example text here </option><option value="673"> Example text here</option><option value="672"> Example text here </option>'

>>> print re.findall(r'>\s*([^<]+?)\s*<', s)
['Example text here', 'Example text here', 'Example text here']

答案 1 :(得分:1)

您可以简单地使用BeautifulSoup来实现此目的。

import bs4

html = '''
<option value="674"> Example text here </option>
<option value="673"> Example text here</option>
<option value="672"> Example text here </option>
'''

soup  = bs4.BeautifulSoup(html)
mylst = [str(x.text).strip() for x in soup.find_all('option')]

输出

['Example text here', 'Example text here', 'Example text here']