加入两个xpath返回

时间:2014-11-06 17:29:31

标签: python xpath

我的问题是如何在打印之前加入两个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表达式的输出?

1 个答案:

答案 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() ")