Как последовательно преобразовывать строки типа «3,71B» и «4M» в числа в Python?

У меня есть довольно искаженный код, который почти создает материальную цену/книжку от 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]

Это довольно грязно, но я думаю, что это сработает, если вместо

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

Я использовал регулярное выражение с переменными. Я предполагаю, что вопрос просто в том, какие регулярные выражения и переменные. Другие предложения тоже хороши.

РЕДАКТИРОВАТЬ:

Чтобы быть конкретным, я надеюсь иметь что-то, что работает для чисел с нулем, одним или двумя десятичными знаками, но все эти ответы выглядят полезными.

5
задан Santosh Kumar 10 August 2012 в 12:30
поделиться