在python中选择一个字符串

时间:2014-04-09 12:32:56

标签: python

假设我在HTML页面中有很多选项(打开为文本文件),如下所示,

<select id="my">
  <option id="1">1a</option>
  <option id="2">2bb</option>     
</select>

<select id="my1">
  <option id="11">11a</option>
  <option id="21">21bb</option>     
</select>

现在,我搜索了<select id=

with open('/u/poolla/Downloads/creat/xyz.txt') as f:
for line in f:
    line = line.strip()
    if '<select id=' in line:
        print "true"

现在,每当<select id=出现时,我想获取id值。 也就是说,将字符串从“id=之后复制到另一个”

我如何在python中执行此操作?

2 个答案:

答案 0 :(得分:3)

html解析器库通常比原始字符串函数或正则表达式更好地解析html。以下是标准HTMLParser类的示例:

html = """
<select id="my">
  <option id="1">1a</option>
  <option id="2">2bb</option>
</select>

<select id="my1">
  <option id="11">11a</option>
  <option id="21">21bb</option>
</select>
"""

from HTMLParser import HTMLParser

class MyParser(HTMLParser):
    def __init__(self):
        HTMLParser.__init__(self)
        self.ids = []

    def handle_starttag(self, tag, attrs):
        if tag == 'select':
            self.ids.extend(val for name, val in attrs if name == 'id')


p = MyParser()
p.feed(html)
print p.ids  # ['my', 'my1']

答案 1 :(得分:0)

BeautifulSoup4有一个非常有用的select方法,可以使用css selectors解析html文档

类似下面的代码(未经测试抱歉:-)),应该可以获取html文档的select标签的所有ID。

from bs4 import BeautifulSoup
soup = BeautifulSoup(html)
tags = soup.select("select")
print [t.get("id", None) t for t in tags]