[英]python lxml xpath returning escape characters in list with text
在上周之前,我在Python上的經驗非常局限於我們網絡上的大型數據庫文件,突然間我進入了試圖從html表中提取信息的世界。
經過大量閱讀后,我選擇使用lxml和xpath與Python 2.7來檢索有問題的數據。 我使用以下代碼檢索了一個字段:
xpath = "//table[@id='resultsTbl1']/tr[position()>1]/td[@id='row_0_partNumber']/child::text()"
產生了以下清單:
['\r\n\t\tBAR18FILM/BKN', '\r\n\t\t\r\n\t\t\t', '\r\n\t\t\t', '\r\n\t\t\t', '\r\n\t\t\t', '\r\n\t\t\t', '\r\n\t\t\t\r\n\t\t']
我認出了CR / LF和標簽轉義字符,我想知道如何避免它們?
這些字符是XML文檔的一部分,這就是它們被返回的原因。 你無法避免它們,但你可以將它們剝離出來。 您可以對返回的每個項調用.strip()
方法:
results = [x.strip() for x in results]
這將剝離前導和尾隨空格。 如果沒有看到您的實際代碼和數據,就很難給出一個好的答案。
例如,給定此腳本:
#!/usr/bin/python
from lxml import etree
with open('data.xml') as fd:
doc = etree.parse(fd)
results = doc.xpath(
"//table[@id='results']/tr[position()>1]/td/child::text()")
print 'Before stripping'
print repr(results)
print 'After stripping'
results = [x.strip() for x in results]
print repr(results)
這個數據:
<doc>
<table id="results">
<tr>
<th>ID</th><th>Name</th><th>Description</th>
</tr>
<tr>
<td>
1
</td>
<td>
Bob
</td>
<td>
A person
</td>
</tr>
<tr>
<td>
2
</td>
<td>
Alice
</td>
<td>
Another person
</td>
</tr>
</table>
</doc>
我們得到這些結果:
Before stripping
['\n\t\t\t1\n\t\t\t', '\n\t\t\tBob\n\t\t\t', '\n\t\t\tA person\n\t\t\t', '\n\t\t\t2\n\t\t\t', '\n\t\t\tAlice\n\t\t\t', '\n\t\t\tAnother person\n\t\t\t']
After stripping
['1', 'Bob', 'A person', '2', 'Alice', 'Another person']
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.