rof*_*fls 5 python regex finance yahoo-finance
我有一些相当严重的代码,几乎可以为雅虎财务公司制作有形的价格/账簿(一个很好的模块已经ystockquote获得了无形的价格/账面价值).
我的问题是:
对于计算中的一个变量,我发现的股票有10.89B和4.9M,其中B和M分别为亿和百万.我无法将它们转换为数字,这就是我所处的位置:
shares=''.join(node.findAll(text=True)).strip().replace('M','000000').replace('B','000000000').replace('.','') for node in soup2.findAll('td')[110:112]
Run Code Online (Sandbox Code Playgroud)
这是非常混乱的,但我认为如果不是,它会起作用
.replace('M','000000').replace('B','000000000').replace('.','')
Run Code Online (Sandbox Code Playgroud)
我正在使用带变量的正则表达式.我想这个问题只是简单的正则表达式和变量.其他建议也很好.
具体来说,我希望有一些适用于零,一或两位小数的数字,但这些答案看起来都很有帮助.
jam*_*lak 14
>>> from decimal import Decimal
>>> d = {
'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')
Run Code Online (Sandbox Code Playgroud)
int()如果你也想要你的结果