2009-10-16 48 views
0

我有一個文件,其結構如下:使用字典進行鍵對比

system.action.webMessage = Web訪問期間發生錯誤。 system.action.okMes​​sage =一切正常。 core.alert.inform =錯誤號5512.

我需要一個腳本來比較2個文件中的鍵與這個結構。我正在使用腳本將文件轉換爲字典,並使用字典結構比較兩個文件中的de鍵('='之前的字符串),並告訴我哪個鍵的值相等。

file = open('system.keys','r') 
lines = [] 
for i in file: 
    lines.append(i.split('=')) 

dic = {} 
for k, v in lines: 
    dic[k] = v 

但我收到以下錯誤:

Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
ValueError: too many values to unpack 

任何一個有一些線索或幫助? :( 我嘗試了很多東西,我發現谷歌,但沒有解決方案。

回答

2
file = open('system.keys','r') 
lines = [] 
for i in file: 
    lines.append(i.partition('=')) 

dic = {} 
for k,_,v in lines: 
    dic[k] = v 

或採用分體式

myfile = open('system.keys','r') 
dic = dict(i.split("=",1) for i in myfile) 

因爲dict()知道如何使一本字典從(key,value)

+0

Thaks man!有用!!! :) – Leonardo 2009-10-16 21:54:56

0

如果一行中有多個'=',你會得到一個列表超過兩個項目,而你的for循環(for k, v in items)預計,每個列表只會有兩個項目

使用i.split('=', 1)嘗試

例如:。

>>> "a=b=c".split('=') 
['a', 'b', 'c'] 
>>> "a=b=c".split('=', 1) 
['a', 'b=c'] 
+0

序列我只在謝勝利,得到這個錯誤「的」,當它改掉到列表轉換成字典。 這兩個文件在每一行中只有一個'='。 – Leonardo 2009-10-16 21:49:48

+1

@Leonardo,那是因爲'lines'裏面有超過2個元素的物品 – 2009-10-16 21:53:02