使用xpath和python 3.6

时间:2018-06-13 19:49:41

标签: python xpath lxml

我无法将解决方案应用于我在此处找到的类似问题。 在可视代码中使用它来使用python和lxml

刮取网页
[...]
tree = html.fromstring(browser.page_source)
data = tree.xpath('//tr[@title="something"]/td[2]/text()')

如果我打印(数据),我会得到这个列表。数据是列表吗?

['\n                    1.27\n                ', '\n                    1.81\n                ', '\n                    4.90\n                ', '\n
       2.07\n                ', '\n                    2.12\n                ']

我的目标是只从每个字符串中提取数字。我已阅读有关正则表达式函数,不确定它是否是解决方案

replace($MyString, '[^0-9]', '')

2 个答案:

答案 0 :(得分:0)

一种简单的方法是使用strip()。您可以通过执行以下操作来清理列表:

clean_data = [d.strip() for d in data]

会给你:

['1.27', '1.81', '4.90', '2.07', '2.12']

如果您希望这些是实际的int,只需使用int(d.strip())代替

答案 1 :(得分:0)

让我们假设您的输出存储在变量x中:

>>> print("\n".join([y.strip() for y in x]))
1.27
1.81
4.90
2.07
2.12

这会有帮助吗?或者你需要一个列表:

>>> print([y.strip() for y in x])
['1.27', '1.81', '4.90', '2.07', '2.12']

<强> [UPDATE]

至于

  

数据是否为列表?

How to determine a Python variable's type?