使用字典进行键比较
我有一个文件,里面的内容结构是这样的:
system.action.webMessage=发生了一个错误,无法访问网页。
system.action.okMessage=一切正常。
core.alert.inform=错误编号 5512。
我需要一个脚本来比较两个文件中的键,这两个文件的结构都是这样的。我正在写一个脚本,把文件转换成字典,然后用字典的结构来比较两个文件中键(就是'='前面的字符串),并告诉我哪个键的值是相等的。
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 个回答
0
如果一行里面有多个'=',那么你得到的列表就会有超过两个的项目,而你的循环(for k, v in items
)是期望每个列表只有两个项目。
你可以试试用 i.split('=', 1)
。
举个例子:
>>> "a=b=c".split('=')
['a', 'b', 'c']
>>> "a=b=c".split('=', 1)
['a', 'b=c']
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()
知道如何从一系列的 (键, 值)
对中创建一个字典