我正在从文件中导入以下格式的数据:
username:password;username1:password1;username2:password2;
我需要将其导入字典并制作key = username
和value = password
等
到目前为止,我得到的是:
with open('file.txt') as f:
password_list = dict(x.strip(":").split(";", 1) for x in f)
for user, password in password_list.items():
print(user + " - " + password)
结果显示为username:password - username1:password1
。所以我需要再次拆分它们。有什么提示吗?
答案 0 :(得分:1)
您需要对拆分操作进行分层:
s = "username:password;username1:password1;username2:password2"
d = dict(v.split(":") for v in s.split(";"))
print(d)
结果:
{'username2': 'password2', 'username': 'password', 'username1': 'password1'}
对于多行文件,只需再添加一个循环:
d = dict(v.split(":") for s in f for v in s.strip().split(";"))
值得补充的是:
;
或:
,则这种格式是短暂的。使用csv
模块和正确的引用可以解决该问题dict(v.split(":") ...)
构造是一种无需字典即可理解的创建字典的旧方法,在这里特别有用,因为split
返回的list
恰好是 2个值(键/值)。答案 1 :(得分:0)
您可以先分割为";"
字符,然后将每个检索到的值分割为":"
字符。
假设输入定义为此
input = "username:password;username1:password1;username2:password2;"
我们可以以此来创建字典
dict([entry.split(":", 1) for entry in input.split(";") if entry])
首先,我们在每个username:password
条目上进行分组
[entry for entry in input.split(";")]
然后我们检查是否没有空条目
[entry for entry in input.split(";") if entry]
然后,我们将每个条目拆分为第一个":"
字符
[entry.split(":", 1) for entry in input.split(";") if entry]
最后我们把它放在字典里
dict([entry.split(":", 1) for entry in input.split(";") if entry])