2014-11-06 4 views
0

Мой вопрос заключается в том, как присоединиться к выходу двух выражений xpath перед его печатью. Мне нужно это для правильной вставки в базу данных MYSQL. Допустим, у меня естьПрисоединиться к двум ошибкам xpath

<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 

с этим питона код:

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) 

Итак, как присоединиться к выходу двух выражений xpath перед печатью в цикле?

+0

Эмм, я не знаю, Python хорошо, но это, кажется, как 'для тд в doc.xpath ('// table/tr [@id = "something"]/td'): print td.text'? – Wrikken

+0

U пропустить главный вопрос. Вопрос заключается в том, как объединить результаты двух запросов xpath. – aaaapppp

ответ

0

Я бы присоединился к ним с itertools. Учитывая, что вы используете for-loop для перебора по ним.

>>> 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() ") 
+0

Да, это работа, думаю. Он печатает те же символы: u '\ u0422, который выглядит отлично, но неправильно кодирует. Но когда я пытаюсь вставить его в sql, он выводит sqlite3.InterfaceError: параметр привязки ошибки 0 - вероятно, неподдерживаемый тип. Я не знаю, что случилось с этим – aaaapppp

+0

Я не знаю Python-SQL. Я думаю, что вы не сможете передать кортежи. Если этот ответ поможет, тогда вы можете отметить его как решение, чтобы другие не тратили время. – User

Смежные вопросы