【发布时间】:2014-01-27 17:19:00
【问题描述】:
我正在编写一个用于解析此类 html 文档的脚本:
<html>
<head></head>
<body>
<p>
<dfn>text</dfn>sometext<i>othertext</i></p>
<p> .....................................</p>
<p> .....................................</p>
</body>
</html>
我尝试了不同的 xml 解析包并在 lxml 上停止。
我需要先迭代dfn 标记的内容,然后使用正则表达式迭代i 标记的内容。因此,我为每个任务编写了 2 个函数。它们分开工作,但不能在同一个脚本中一起工作。他们在这里:
tree = etree.parse(html-file)
def f1():
for x in tree.getiterator('dfn'):
bu = x.text
if re.findall(r'\s[A-Z]{1,2}$', bu):
print(bu)
def f2():
for x in tree.getiterator('i'):
mu = x.text
if re.findall(r'\W\s[A-Z]$', mu):
print(mu)
def main():
f1()
f2()
if __name__ == "__main__":
main()
当我运行脚本时,我得到 f1 的正确输出,然后是以下错误消息:
Traceback (most recent call last):
File "/home/elaine/Desktop/try2.py", line 47, in <module>
main()
File "/home/elaine/Desktop/try2.py", line 33, in main
f1()
File "/home/elaine/Desktop/try2.py", line 20, in f1
if re.findall(r'\s[A-Z]{1,2}$', bu):
File "/usr/lib/python2.7/re.py", line 177, in findall
return _compile(pattern, flags).findall(string)
TypeError: expected string or buffer
【问题讨论】:
-
如果您首先调用
f2,它是否会为您提供正确的输出,然后是f1的错误?
标签: python function xml-parsing lxml