2016-12-04 4 views
1

Я написал эту строку кода для создания списка с помощью XPathПустой текст в Xpath

classes=tree.xpath('//a[@class="pathm"]/../../../../../td[3]/font/text()') 

Это создает list.Their также объекты, содержащие пустой список text.The не содержит them.It содержит только не пустые значения. Я хочу взять пустую строку в списке, где бы их не было текста. Пожалуйста, помогите

ответ

1

Вы можете получить только //font, а затем использовать цикл, чтобы получить текст или собственный текст, если есть пустой текст (или, вернее, None)

import lxml.html 

data = ''' 
<font>A</font> 
<font></font> 
<font>C</font> 
''' 

tree = lxml.html.fromstring(data) 

fonts = tree.xpath('//font') 

result = [x.text if x.text else '' for x in fonts] 

print(result) 

Если вы не знаете, как список понимание работы - он делает это

result = [] 

for x in fonts: 
    if x.text: # not None 
     result.append(x.text) 
    else: 
     result.append('') 

print(result) 
Смежные вопросы