2017-09-11 13 views
0

私は文字列から通貨を取り、それを他の通貨に変換するプログラムを作っています。たとえば、文字列が'the car cost me $13,250'の場合、$13250を取得する必要があります。私はこの正規表現を既に持っています(?:\£|\$|\€)(?:.{1,})そのようにしていますが、文字列には複数の価格があり、すべて異なる通貨を使用する可能性がかなり高いです。これは私が効果的にやる方法を知らないものです。Pythonの文字列から通貨量を抽出します

私が知る必要があるのは、文字列からすべての価格を抽出する方法です。私は正規表現がちょうど['$12,250,000','£14,500,123','£120.25']のようなものを返す場合でも、私は数を取得するには、このようなものを使用することができますので、それは大丈夫だと思う:

prices = ['$12,250','£14,500','£120'] 
for value in prices: 
    value.replace(',','') 

そして、このような何か通貨を取得する:

for c in prices: 
    currency = c[0] 

次に、価格が整数ではないかもしれないという問題があり、$12.54のようなものかもしれません。価格の最初のリストを得る方法についてのどんな助けも素晴らしいでしょう。

+0

[Pythonで数値を通貨に解析する](https://stackoverflow.com/questions/37580151/parse-currency-into-numbers-in-python) – Software2

+0

いいえ通貨を数字に変換するのは問題ありません私が示したように、文字列からすべての価格値を最初に取り出す方法を知る必要があります。 –

+0

're.findall'を使用しますか? 're.findall(r :(?:\ | \ $ | \€)(?:[\ d \。\、] {1、})"、s) 'それは完璧ではないでしょう。おそらく偽陽性を後でフィルタリングするほうが簡単でしょう –

答えて

0

この正規表現は、あなたの目的のために良い仕事します:

(?:[\£\$\€]{1}[,\d]+.?\d*)

hereそれを試してみてください。

次に、sainobaのメモとして、re.findallまたはre.finditerを使用して一致を得ることができます。

その後、最初の文字から通貨を抽出し、カンマを削除し、必要に応じて小数点に分割することができます。

+0

ありがとう、これは私が必要としたものです。 –

0

通貨を扱う場合、カンマやピリオドの置き換えなどの簡単な方法は使用できません。言語と地域の違いは数多くあります。ユーロは小数点区切り記号としてカンマまたはピリオドを使用できます。一部のロケールでは、グループ分けの間に2桁または3桁の数字が表示されることがあります。通貨記号は、左または右にあります。シンボルは、ユーザーのロケールに応じて、12種類の通貨のいずれかを表します。

ライブラリを使用して、この作業を処理します。この問題は、this oneなどの他の投稿で詳細に説明されています。

関連する問題