簡體   English   中英

如何從python列表中的元素中提取浮點數?

[英]How do you extract the floats from the elements in a python list?

我正在使用BeautifulSoup4來構建執行財務計算的腳本。 我已成功將數據提取到列表中,但只需要元素中的浮點數即可。

例如:

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

你可以做

>>> import re
>>> re.findall("\d+\.\d+", yourString)
['1.3', '5.49', '1.3']
>>> 

然后轉換為浮點數

>>> [float(x) for x in re.findall("\d+\.\d+", yourString)]
[1.3, 5.49, 1.3]
>>> 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM