以下是引用huangyz_xy在2020-9-7 08:08:54的发言:
<tr><td></td><td>abcd</td><td></td><td>0</td><td>0</td><td>0</td><td>3404</td><td>0</td><td>0</td><td>0</td><td>0</td></tr>
用rows.xpath(".//td//text()")方法解析出来的值为['abcd', '0', '0', '0', '70', '0', '0', '0', '0'],很明显确实了两列,有什么办法将标红的地方也解析出来,用其他的字符串代替,成为一个完成的列表?我的最终目的是要将整个写入到dataframe,如果不把缺失列列出来就会错乱(数据了有点大,近100万行,同时要考虑内存开销)。请各位大佬帮帮忙,谢谢!
程序代码:
from lxml import etree
text = '''
<tr><td></td><td>abcd</td><td></td><td>0</td><td>0</td><td>0</td><td>3404</td><td>0</td><td>0</td><td>0</td><td>0</td></tr>
'''
html = etree.HTML(text)
results = list(map(lambda x: x.xpath(".//text()"),html.xpath(".//td")))
print(results)
[[], ['abcd'], [], ['0'], ['0'], ['0'], ['3404'], ['0'], ['0'], ['0'], ['0']]