2017-05-07 235 views
-1

我正在瀏覽一個json文件,並使用正則表達式來提取公司財務關鍵績效指標及其相應值的信息。例如,正則表達式爲
"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']) 

原來你的數據轉換成詞典的詞典,讓你不必擔心解析。