从字节数据中提取一些数字

Extracting some numbers from a byte data

我是网络抓取的新手。使用这些行抓取一些网站后:

x1 = urllib.request.urlopen('somewebsite1').read()
x2 = urllib.request.urlopen('somewebsite2').read()
x3 = urllib.request.urlopen('somewebsite3').read()

我有以下数据:

In [14]:print(x1)
b'<li><span class="Price down2">0.071&nbsp;</span></li>'

In [15]:print(x2)
b'<li><span class="Price up2">0.059&nbsp;</span></li>'

In [16]:print(x3)
b'<li><span class="Price down2">0.079&nbsp;</span></li>'

x1、x2、x3的数据类型都是字节。我想从 x1、x2 和 x3 中提取 0.071、0.059、0.079 作为浮点数。这样做的 pythonic 方式是什么?

提前致谢

编辑:为了更好的展示

您可以使用正则表达式:

import re
x1_extracted = re.findall('(?<=>)\d+\.*\d*', x1.decode('utf-8'))
x1_extracted = float(x1_extracted[0])

首先,您需要解码字节序列(将其从字节转换为字符串。我假设编码是 utf-8)。然后您可以使用 re 模块来查找值。 Step-by-step,表达式的意思是:找到一个或多个数字(\d+),可选地后跟一个点(\.*)和可选地后跟更多数字(\d*)。所有这些都应该以 > ((?<=>)) 开头。