从.txt文件创建字典

2024-10-02 02:40:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个包含用户列表的.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']

怎么了?你知道吗


Tags: key用户answernametxtvaluelinedocument
3条回答

问题是您在所有的空白处分割字符串,这就是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']}

您所需要的只是用分隔符-而不是空格再次拆分value。你知道吗

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

python docs

str.split([sep[, maxsplit]]) Return a list of the words in the string, using sep as the delimiter string.

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']

相关问题 更多 >

    热门问题