2016-07-15 122 views
-1

我正在編寫一個將要交易選項的程序。 使用谷歌財務我能夠在未完成的json文件中獲得選項數據。JSON重新格式化

可以找到數據here

如果您單擊鏈接,您將看到名稱和值應該用引號括起來,但不是。事實上NONE的名字都是用引號引起來的,只有一些值是。

實施例的數據:

{屆滿:{Y:2016,M:7,d:15},到期:[{Y:2016,M:7,d:15}],提出: [{CID: 「779929396002479」,名稱: 「」,S: 「AAPL160715P00050000」,例如: 「OPRA」,p: 「0.01」,CS: 「CHB」,C: 「0.00」,CP: 「0.00」,b :「 - 」,a:「0.01」,oi:「2490」,vol:「 - 」,罷工:「50.00」,到期日:「2016年7月15日」}],underlying_id:「22144」,underlying_price:98.599998}

我知道代碼爲C#來解決這個問題是:

data = Regex.Replace(data, @"(\w+:)(\d+\.?\d*)", "$1\"$2\""); 
data = Regex.Replace(data, @"(\w+):", "\"$1\":"); 

我需要將C#代碼轉換爲Python或能夠將文件加載到Python,任何機構可以幫助?

回答

0

的可能重複:python .replace() regex

這裏是對Python 3.5文檔的鏈接,請您在這裏發佈之前搜索庫/語言功能。

你需要做以下步驟Python來完成這個

導入regex庫

import re 

讀取文件

with open('f-1.txt', 'r') as myfile: 
    data=myfile.read().replace('\n', '') 

使用re.sub()開展你的內容替換

data = re.sub("(\w+:)(\d+\.?\d*)", "$1\"$2\"", data); 
data = re.sub("(\w+):", "\"$1\":", data); 

如果你想把這個json變成一個python對象,你需要做以下的事情。

import json 
json_object = json.loads(data) 
+0

這將所有值替換爲$ 1或$ 2 ...但它會將引號 – Usman