从.txt文件创建字典

时间:2015-07-28 01:37:20

标签: python dictionary

我有一个包含用户列表的.txt文件,它是这样的:

ID - NAME(S) - LAST NAME(S) - LOGIN - PASSWORD

0001 - Juan Carlos - Botero Mora - jcboterom - snf23jn4

.

.

所以,我需要创建一个这样的字典:

{'0001': ['Juan Carlos', 'Botero Mora', 'jcboterom', 'snf23jn4']}

代码是

def dict():
with open('admins.txt', 'r') as document:
    answer = {}
    for line in document:
        if line.strip():
            key, value = line.split(None, 1)
            answer[key] = value.split()
return answer

但这就是我得到的:

{'0001': ['-', 'Juan', 'Carlos', '-', 'Botero', 'Mora', '-', 'jcboterom', '-', 'snf23jn4']

出了什么问题?

3 个答案:

答案 0 :(得分:0)

您只需要使用分隔符value而不是空格来再次分割-

>>> key, value = line.split('-', 1)
>>> answer[key] = value.split(' - ')
>>> answer
{'0001 ': [' Juan Carlos', 'Botero Mora', 'jcboterom', 'snf23jn4']}

来自python docs

  

str.split([sep[, maxsplit]])返回字符串中的单词列表,   使用sep作为分隔符字符串。

答案 1 :(得分:0)

问题是你在所有白场分割你的字符串,这是str.split()所做的。相反,您应该将它们拆分为'-',然后从结果中删除空格。

代码 -

def dict():
    with open('admins.txt', 'r') as document:
        answer = {}
        for line in document:
            if line.strip():
                key, value = line.split('-', 1)
                answer[key.strip()] = [v.strip() for v in value.split('-')]
    return answer

演示 -

>>> s = '0001 - Juan Carlos - Botero Mora - jcboterom - snf23jn4'
>>> key,value = s.split('-',1)
>>> answer = {}
>>> answer[key.strip()] = [v.strip() for v in value.split('-')]
>>> answer
{'0001': ['Juan Carlos', 'Botero Mora', 'jcboterom', 'snf23jn4']}

答案 2 :(得分:0)

split()可以使用模式。您可以在此处使用' - '

>>> s = '0001 - Juan Carlos - Botero Mora - jcboterom - snf23jn4'
>>> s
'0001 - Juan Carlos - Botero Mora - jcboterom - snf23jn4'
>>> [key, value] = s.split(' - ', 1)
>>> key
'0001'
>>> value
'Juan Carlos - Botero Mora - jcboterom - snf23jn4'
>>> value = value.split(' - ')
>>> value
['Juan Carlos', 'Botero Mora', 'jcboterom', 'snf23jn4']