前提・実現したいこと
リスト内にM(ミリオン)やB(ビリオン)が入っている数字(文字列)に対して、数字に変更する関数を定義したいです。
下記のようなリストがあります。
l = ['4.17B', '285M', '1.72B', '3.91B', '(388.679)']
このリストに対して、欲しい結果は下記のようなものです。
Mはミリオン,000000(0が6つ)に入れ替え、Bは000000000(0が9つ)に入れ替えたいです。
[4170000000, 285000000, 1720000000, 3910000000, -388679]
発生している問題・エラーメッセージ
ところが、現在mapとLamdaを組みあわせたものをだと、
['417000000000', '285000000', '172000000000', '391000000000', '-388679']
となってしまい、小数点をうまく処理できていません。
Decimalを使ってみたりしたのですが、うまくいきませんでした。
お知恵お借りできれば幸いです。
当方プログラミング初心者です。。
エラーメッセージ
該当のソースコード
python
1l = ['4.17B', '285M', '1.72B', '3.91B', '(388.679)'] 2 3def unit_changer(ll=None) : 4 5 if ll is None: 6 ll =[] 7 LSV = 0 8 for LSV in range(5): 9 ll = list(map(lambda d: d.replace("M", "000000"), ll)) 10 ll = list(map(lambda d: d.replace("B", "000000000"), ll)) 11 ll = list(map(lambda d: d.replace("(", "-"), ll)) 12 ll = list(map(lambda d: d.replace(")", ""), ll)) 13 ll = list(map(lambda d: d.replace(".", ""), ll)) 14 return ll 15 16 17print(unit_changer(l)) 18
試したこと
色々と調べて、Decimalなども使ってみたのですが、うまくいきませんでした。
補足情報(FW/ツールのバージョンなど)
Python3.7、Pycharmを使っています。
回答2件
あなたの回答
tips
プレビュー