我正在使用 BeautifulSoup4 构建一个进行财务计算的脚本。我已成功将数据提取到列表中,但只需要元素中的 float 。
例如:
Volume = soup.find_all('td', {'class':'text-success'})
print (Volume)
这给了我以下列表输出:
[<td class="text-success">+1.3 LTC</td>, <td class="text- success">+5.49<span class="muteds">340788</span> LTC</td>, <td class="text-success">+1.3 LTC</td>,]
我希望它变成:
[1.3, 5.49, 1.3]
我该怎么做?
非常感谢您阅读我的帖子,我非常感谢我能得到的任何帮助。
最佳答案
您可以在每个td
中找到第一个文本节点,将其按空格分割,获取第一项并通过float()将其转换为
- float
+
将自动处理:
from bs4 import BeautifulSoup
data = """
<table>
<tr>
<td class="text-success">+1.3 LTC</td>
<td class="text-success">+5.49<span class="muteds">340788</span> LTC</td>
<td class="text-success">+1.3 LTC</td>
</tr>
</table>"""
soup = BeautifulSoup(data, "html.parser")
print([
float(td.find(text=True).split(" ", 1)[0])
for td in soup.find_all('td', {'class':'text-success'})
])
打印[1.3, 5.49, 1.3]
。
请注意 find(text=True)
如何帮助避免在第二个 td
中提取 340788
。
关于python - 如何从 python 列表中的元素中提取 float ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39437366/