我会使用一个函数来进行解析,然后map()
在每一行上调用它:
def _parse_user_line(line):
name, surname, phone, address, email, etc = line.split(';', 6)
return {'nick': nick, 'surname': surname, 'phone': phone,
'address': address, 'email': email, 'etc': etc}
data = map(_parse_user_line, file)
将返回的列表分配给单个变量然后只使用等可能也是一个好主意fields[0]
-fields[1]
它们无论如何都会在 dict 键旁边,所以每个人都知道它们是什么:
def _parse_user_line(line):
u = line.split(';', 6)
return {'nick': u[0], 'surname': u[1], 'phone': u[2],
'address': u[3], 'email': u[4], 'etc': u[5]}
data = map(_parse_user_line, file)
现在我们可以通过结合Roman 的回答中的想法来使它变得更好:
labels = 'nick surname phone address email etc'.split()
def _parse_user_line(line):
values = line.split(';', 6)
return dict(zip(labels, values))
data = map(_parse_user_line, file)
永远不要忘记(来自 Python 之禅的一行):import this
可读性很重要。