gpt4 book ai didi

python lxml xpath 在带有文本的列表中返回转义字符

转载 作者:行者123 更新时间:2023-11-28 18:45:02 28 4
gpt4 key购买 nike

上周之前,我使用 Python 的经验非常局限于我们网络上的大型数据库文件,突然间我被插入了尝试从 html 表中提取信息的世界。

经过大量阅读,我选择在 Python 2.7 中使用 lxml 和 xpath 来检索有问题的数据。我使用以下代码检索了一个字段:

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']

关于python lxml xpath 在带有文本的列表中返回转义字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21610035/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com