我的问题是如何在打印之前加入两个xpath表达式的输出。我需要这个正确插入MYSQL数据库。 可以说我有
<fieldset class="fieldgroup group-ingred">
<strong><a href="/log/www"><span class="ingredient">Have1</span></a>- </strong>30gramm,<br />
<strong><span class="ingredient">Have2</span> - </strong>50gramm,<br />
<strong>And</strong><span class="ingredient">Have3</span>.<br />
################## there are a lot of similar lines here
</fieldset>
所以,我可以得到类似的东西:
Have1
30gramm,
Have2
50gramm,
Have3
使用此python代码:
for v in doc.xpath("//span[@class='ingredient']/text() | //fieldset[@class='fieldgroup group-ingred']/child::text() "):
v =unicode(v)
print v
但我想要那样的东西
Have1 30gramm,
Have2 50gramm,
Have3
加入这样的字符串(这只是一个例子)没有帮助我,因为它输出一个字符串而不是三个字符串。
date = ' '.join(td.text for td in doc.xpath(//span[@class='ingredient']/text() | //fieldset[@class='fieldgroup group-ingred']/child::text() ))
print(date)
那么,如何在for循环中打印之前加入两个xpath表达式的输出?
答案 0 :(得分:0)
我会和itertools一起加入他们。鉴于您使用for循环迭代它们。
>>> import itertools
>>> for i in itertools.zip_longest(range(3), range(15,20)):
print(i)
(0, 15)
(1, 16)
(2, 17)
(None, 18)
(None, 19)
在你的情况下,范围将是你的xpath查询分割如下:
doc.xpath("//span[@class='ingredient']/text()"), doc.xpath("//fieldset[@class='fieldgroup group-ingred']/child::text() ")