2017-06-17 119 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