2017-05-07 13 views
-1

私はjsonファイルを使い、正規表現を使用して、会社の財務KPIとその対応する値に関する情報を引き出します。たとえば、正規表現の
"grossProfits":{"raw":19805000000,"fmt":"19.8B","longFmt":"19,805,000,000"}Pythonの正規表現{}

は19.8Bを返します。問題は、KPIに情報がない場合です。例えば、 "returnOnEquity":{}

この場合、returnOnEquityは、正規表現が見つけた次の番号を返します。
"returnOnEquity":{},"grossProfits":{"raw":19805000000,"fmt":"19.8B","longFmt":"19,805,000,000"}

returnOnEquityに返される値は、grossProfits(19.8B)の値になります。ここで

が私の現在の正規表現は完璧な世界ではr'.*?"(\d{1,8}\.\d{1,8}M?B?K?|[{}])%?'

ですが、私はそれが0を返すそれでも「{」または「}」したいと思うだけで十分でしょう。

ご迷惑をおかけして申し訳ありません。あなたのケースでは

+3

なぜ 'json'モジュールを使用しないのですか? –

+0

詳しくは、 'json'モジュールを使ってPython辞書にして、これを正規表現で解析する必要はありません。キーを使用してデータを取得するだけです。 – roganjosh

+0

'json'モジュールを使います。 –

答えて

0

以前のコメンテーターによって示唆されるように、jsonモジュールを移動するための方法である(Docsを参照)

import json 

with open('sample.txt') as js: 
    data = json.load(js) 

for firm in data: 
    print(firm) 
    print(data[firm]['grossProfits']['raw']) 
    print(data[firm]['returnOnEquity']) 

それは辞書の辞書にデータを回すので、あなた解析を心配する必要はありません。