2017-06-17 157 views
0

我在通過文本文件將最後一個數據提取到我的程序中遇到了困難。我對Python非常陌生,如果答案非常簡單,請原諒我。從python文本文件中提取數據3

我有這個序列的數據集在一個文本文件中,我已經提取美元作爲我的賣出貨幣英鎊作爲我的買入貨幣和0.50443作爲我的匯率。但我不知道如何提取成本作爲我的交易成本和0.0001作爲該變量的相關值。

{"USD_GBP_COST": "0.50443,0.0001", "USD_USD_COST": "1.00000,0.0000", "USD_EUR_COST": "0.73951,0.01211"}

以下是我對其他部分代碼:

currency_rates = json.loads(page) 

splited_rates = re.compile("([A-Z]{3})_([A-Z]{3})")#split the string which is read from the url,it should be any 3 uppercase characters sperated by a _ 

for key in currency_rates: 
    matches=splited_rates.match(key) 
    log_con_rate = -math.log(float(currency_rates[key])) 
    selling_currency = matches.group(1).encode('ascii','ignore') 
    buying_currency = matches.group(2).encode('ascii','ignore') 
+2

如果當您運行此會發生什麼?什麼不在這裏工作?你想要什麼輸出? –

+0

嘿,它給了我這個錯誤文件「C:\ Python34 \ lib \ json \ decoder.py」,行343,在解碼中 obj,end = self.raw_decode(s,idx = _w(s,0).end ()) Value_Error:期望':'分隔符:第1行(第1行)文件「C:\ Python34 \ lib \ json \ decoder.py」,第359行,raw_decode obj,end = self.scan_once(s,idx) 407(char 406) – Hash

回答

0

的問題是在這裏:

float(currency_rates[key]) 

這給錯誤ValueError: could not convert string to float: '0.50443,0.0001'。我認爲這個信息是不言自明的。它告訴你,你需要分開挑串入兩個數字試圖把他們之前到float S:

con_rate_s, transaction_cost_s = currency_rates[key].split(",") 
log_con_rate = -math.log(float(con_rate_s)) 
transaction_cost = float(transaction_cost_s) 
+0

非常感謝你的回覆,我嘗試過,但我得到了這樣的錯誤文件「C:\ Python34 \ lib \ json \ decoder.py」,第343行,在解碼中 obj,end = raw.decode obj,end = self.scan_once文件「C:\ Python34 \ lib \ json \ decoder.py」,行359,= self.raw_decode(s,idx = _w(s,0).end()) (s,idx) ValueError:期望':'分界符:第1行第407列(char 406) – Hash

+0

那麼,這是一個完全不同的錯誤。你的問題說:「我如何從這本字典中獲得交易成本?」但是你現在報告的問題是'json.loads()'不喜歡你的json文件。查看文件內容,看看能否確定問題所在。如果必須的話,最多可以計算出406個字符。該消息非常明確:在那個時候正在尋找':'而沒有找到它。 – BoarGules

+0

是的,這是我的數據文件中的一個錯誤。現在想出來了。讓我不要看到它。現在它可以工作,非常感謝你:) – Hash