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

时间:2019-06-24 03:27:55

标签: python python-3.x byte urllib urlopen

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

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方法是什么?

提前谢谢

编辑:为了获得更好的展示效果

1 个答案:

答案 0 :(得分:2)

您可以使用正则表达式:

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

首先,您需要解码字节序列(将其从字节转换为字符串。我假设编码为utf-8)。然后,您可以使用re模块来查找值。该表达式的逐步含义是:查找一个或多个数字(\d+),然后可选地跟一个点(\.*),然后可选地再跟一个数字(\d*)。所有这些之前都应加上>(?<=>))。