使用xpath和python 3.6从字符串中提取数字

使用xpath和python 3.6从字符串中提取数字,python,xpath,lxml,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

我无法将解决方案应用于我在这里发现的类似问题。 在可视化代码中使用此选项后,使用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]', '')

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

clean_data=[d.strip()表示数据中的d]

这将给你:

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


如果您想将它们作为实际的
int
s,只需使用
int(d.strip())
即可

让我们设想您的输出存储在变量
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']
[更新]

至于

数据是列表吗


这也正是我所需要的。