我寫一個腳本解析這樣的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'一個錯誤嗎? –