python - 如何从 python 列表中的元素中提取 float ?

标签 python regex beautifulsoup

我正在使用 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/

相关文章:

python - 替换数据框 MultiIndex 上的操作

python - django 模板不呈现

python - 使用 Beautiful Soup 的 Python 网络爬虫 BFS 算法?

python - 成功创建 super 用户后无法登录 Heroku 管理面板

java - 我可以从字符串中提取数字而不计算该字符串中的数字数量吗?

Java仅从字符串中提取第一个字母/字符

java - pattern() 与 Pattern 类中的 toString()

python-3.x - 从html中的嵌入式脚本标签中提取数据

python - 如何使用 selenium 获取下一页的评论?

python - scikit learn 的 train_test_split( ) 方法