从html中提取的字符串中提取float

时间:2017-01-24 21:46:40

标签: python html

我正在尝试从一个简单的html页面中提取数据,该页面从arduino读取温度,我已经设法达到了温度读数的字符串:

  

'摄氏温度:\ r \ n 23.20 \ r \ n * C'

但我无法弄清楚如何从字符串中提取温度浮点数,有什么建议吗?请记住,随着arduino的实时阅读,产生的温度会发生变化......

from lxml import html
import requests
page = requests.get('http://192.168.1.103:180')
tree = html.fromstring(page.content)
extract = tree.xpath('/html/body/h3[1]/text()')
print extract

1 个答案:

答案 0 :(得分:2)

一种选择是应用正则表达式:

In [1]: import re

In [2]: s = 'Temperature in Celsius: \r\n 23.20\r\n*C'

In [3]: re.search(r"\d+\.\d+", s).group(0)
Out[3]: '23.20'

其中\d+匹配一个或多个连续数字,\.是一个文字点。

或者,您可以按:拆分并“删除”不需要的部分:

In [4]: s.split(":")[-1].strip(" \r\n*C")
Out[4]: '23.20'

请注意,lxml中的xpath()方法返回列表,不要忘记从中获取所需的字符串。