从字节数据中提取一些数字
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 </span></li>'
In [15]:print(x2)
b'<li><span class="Price up2">0.059 </span></li>'
In [16]:print(x3)
b'<li><span class="Price down2">0.079 </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*
)。所有这些都应该以 >
((?<=>)
) 开头。
我是网络抓取的新手。使用这些行抓取一些网站后:
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 </span></li>'
In [15]:print(x2)
b'<li><span class="Price up2">0.059 </span></li>'
In [16]:print(x3)
b'<li><span class="Price down2">0.079 </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*
)。所有这些都应该以 >
((?<=>)
) 开头。