如果有人能告诉我这段代码我做错了什么,我会更加干净。我有一个HTML,想要读出成立的年份 - 在这种情况下 1949 。我怎么样?请注意空格和空白行。
以下是代码
<h4> Founded in
</h4></td><td><h5> <!--10305--> 1949</h5></td></tr> <tr>
这是我正在使用的代码。没有任何东西正在印刷。
myf = 'THE HTML HERE'
myf.replace("<!--10305-->", "")
year = re.findall(r"<h4> Founded in.*? (.*?)</h5></td></tr> <tr>", myf, re.DOTALL)
print year
任何帮助都将不胜感激。
答案 0 :(得分:2)
将lxml
与xpath一起使用:
>>> import lxml.html
>>>
>>> root = lxml.html.fromstring('''
... <tr>
... <td>
... <h4> Founded in
...
... </h4></td><td><h5> <!--10305--> 1949</h5></td></tr>
... ''')
>>> root.xpath('//h4[contains(text(), "Founded in")]/parent::*/following-sibling::*')[0].text_content().strip()
'1949'
答案 1 :(得分:0)
字符串是不可变的。这样:
myf.replace("<!--10305-->", "")
返回一个值,但不会更改myf
。你想要:
myf = myf.replace("<!--10305-->", "")
此外,此代码无论如何都会打印出来:
import re
myf = """\
<h4> Founded in
</h4></td><td><h5> <!--10305--> 1949</h5></td></tr> <tr>"""
myf.replace("<!--10305-->", "")
year = re.findall(r"<h4> Founded in.*? (.*?)</h5></td></tr> <tr>", myf, re.DOTALL)
year
#>>> ['<!--10305--> 1949']
所以真正的问题出在其他地方。