Python正则表达式 - 提取每个表格单元格内容

时间:2012-03-23 01:54:48

标签: python regex

  

可能重复:
  RegEx match open tags except XHTML self-contained tags

如果我的字符串看起来像......

"<tr><td>123</td><td>234</td>...<td>697</td></tr>"

基本上是一个包含n个单元格的表格行。

python中获取每个单元格值的最简单方法是什么。那就是我只想将值“123”,“234”,“697”存储在列表或数组中,或者是最简单的。

当我使用

时,我尝试使用正则表达式
re.match

我无法找到任何东西。如果我尝试

re.search 

我只能得到第一个细胞。但我想得到所有的细胞。如果我不能用n个单元格做这个,你会用固定数量的单元格做到这一点?

3 个答案:

答案 0 :(得分:5)

如果该标记是更大的标记集的一部分,您应该更喜欢使用带有HTML解析器的工具 其中一个工具是BeautifulSoup 这是使用该工具找到所需内容的一种方法:

>>> markup = '''"<tr><td>123</td><td>234</td>...<td>697</td></tr>"'''
>>> from bs4 import BeautifulSoup as bs
>>> soup = bs(markup)
>>> for i in soup.find_all('td'):
...     print(i.text)

结果:

123
234
697

答案 1 :(得分:0)

不要这样做。只需使用正确的HTML解析器,并使用类似xpath的内容来获取所需的元素。

很多人喜欢lxml。对于此任务,您可能希望使用BeautifulSoup后端,或直接使用BeautifulSoup,因为这可能不是来自已知生成格式良好的有效文档的源的标记。

答案 2 :(得分:0)

使用lxml时,会创建一个元素树。元素树中的每个元素都包含有关标记的信息。

from lxml import etree
root = etree.XML("<root><a x='123'>aText<b/><c/><b/></a></root>")
elements = root.findall(".//a")
tag = elements[0].tag
attr = elements[0].attr

我没有在这台计算机上安装lxml而且我不确定你添加到元素末尾的内容是为了得到一个attr。如果.attr不起作用,你将不得不使用谷歌来获取一个元素的attr。