我有一个包含用户列表的.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']
出了什么问题?
答案 0 :(得分:0)
您只需要使用分隔符value
而不是空格来再次分割-
。
>>> key, value = line.split('-', 1)
>>> answer[key] = value.split(' - ')
>>> answer
{'0001 ': [' Juan Carlos', 'Botero Mora', 'jcboterom', 'snf23jn4']}
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']