【发布时间】:2017-04-28 09:05:18
【问题描述】:
我关注this question 和this other one 是为了解析来自维基百科的表格。
具体来说,我只想获取所有行,并在每一行中转储每一列的内容。
我的代码在 MacOS X 下使用 xml 库,但我得到的只是一个空行列表。
import xml.etree.ElementTree
s = open("wikiactors20century.txt", "r").read()
# tree = xml.etree.ElementTree.fromstring(s)
# rows = tree.findall()
# headrow = rows[0]
# datarows = rows[1:]
#
# for num, h in enumerate(headrow):
# data = ", ".join([row[num].text for row in datarows])
# print "{0:<16}: {1}".format(h.text, data)
table = xml.etree.ElementTree.XML(s)
rows = iter(table)
headers = [col.text for col in next(rows)]
for row in rows:
values = [col.text for col in row]
print dict(zip(headers, values))
输入文件has been pasted here in PasteBin。 xml.etree.ElementTree.fromstring 和xml.etree.ElementTree.XML 版本都无法检索行列表。但是,如果我像这样制作一个虚拟表
s = "<table> <tr><td>a</td><td>1</td></tr> <tr><td>b</td><td>2</td></tr> <tr><td>c</td><td>3</td></tr> </table>"
然后解析工作正常。
我做错了什么?在解析文件之前我必须进行一些清理吗?
【问题讨论】: