gpt4 book ai didi

python - 如何在 Python 中始终如一地将 "3.71B"和 "4M"等字符串转换为数字?

转载 作者:太空狗 更新时间:2023-10-30 00:21:24 25 4
gpt4 key购买 nike

我有一些相当困惑的代码,几乎可以从 Yahoo Finance 为公司生成有形价格/账簿(一个名为 ystockquote 的模块可以获取无形价格/已预订值(value))。

我的问题是:

对于计算中的变量之一,已发行股票,我得到了类似 10.89B4.9M 的字符串,其中 BM分别代表亿百万。我在将它们转换为数字时遇到问题,这是我所在的位置:

shares=''.join(node.findAll(text=True)).strip().replace('M','000000').replace('B','000000000').replace('.','') for node in soup2.findAll('td')[110:112]

这很乱,但我认为如果不是

.replace('M','000000').replace('B','000000000').replace('.','') 

我使用的是带变量的正则表达式。我想问题只是哪个正则表达式和变量。其他的建议也不错。

编辑:

具体来说,我希望有一些适用于零、一位或两位小数的数字,但这些答案看起来都很有帮助。

最佳答案

>>> from decimal import Decimal
>>> d = {
'K': 3,
'M': 6,
'B': 9
}
>>> def text_to_num(text):
if text[-1] in d:
num, magnitude = text[:-1], text[-1]
return Decimal(num) * 10 ** d[magnitude]
else:
return Decimal(text)

>>> text_to_num('3.17B')
Decimal('3170000000.00')
>>> text_to_num('4M')
Decimal('4000000')
>>> text_to_num('4.1234567891234B')
Decimal('4123456789.1234000000000')

如果你也想要,你可以int()结果

关于python - 如何在 Python 中始终如一地将 "3.71B"和 "4M"等字符串转换为数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11896560/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com