如何从给定的txt文件创建字典?

2024-09-25 06:31:00 发布

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

我有一个由用户名和密码组成的文本文件,用逗号分隔,我需要将其转换成这样的字典:

userData = [{'username': 'something@test.com', 'password': 'test123'},
            {'username': 'somethingelse@test.com', 'password': 'test1234'},
            {'username': 'somethingmore@test.com', 'password': 'test123'},
            ]

文件如下所示:

something@test.com,test123
somethingelse@test.com,test1234
somethingmore@test.com,test123

我尝试了下面的方法,但是它只返回文本文件的最后一行,所以我假设每一行都会覆盖字典。你知道吗

file = open('username.txt', 'r')
userData = {}
userData['username'] = ''
userData['password'] = ''

for line in file:
   x = line.split(',')
   un = x[0]
   pw = x[1]
   userData['username']=un
   userData['password']=pw

怎样才能得到正确的输出?你知道吗


Tags: testcom字典lineusernamepasswordsomethingfile
3条回答

您需要一个字典列表,但是您只创建了一个字典,它在for循环中每次都被修改。您必须为每行创建另一个词典并将其存储在列表中。
试试这个:

file = open('username.txt', 'r')
userDataList = []

for line in file:
   x = line.split(',')
   userData = {}
   userData['username'] = x[0]
   userData['password'] = x[1]
   userDataList.append(userData)

^{}模块中使用^{}

import csv

with open('usernames.txt') as csvfile:
    reader = csv.DictReader(csvfile,
                            fieldnames=['username', 'password'])
    users = list(reader)

例如:

>>> import csv
>>> import pprint
>>> from StringIO import StringIO

>>> content = """something@test.com,test123
... somethingelse@test.com,test1234
... somethingmore@test.com,test123"""

>>> usernames = StringIO(content)
>>> pprint(list(csv.DictReader(usernames,
...                            fieldnames=['username', 'password'])))
[OrderedDict([('username', 'something@test.com'), ('password', 'test123')]),
 OrderedDict([('username', 'somethingelse@test.com'),
              ('password', 'test1234')]),
 OrderedDict([('username', 'somethingmore@test.com'), ('password', 'test123')])]

这应该起作用:

file = open('username.txt', 'r')
userData = {}

for line in file:
   x = line.split(',')
   userData[x[0]] = x[1]

在原始代码中,实际上并没有修改字典,只是修改了一个用户名和密码。你知道吗

编辑:我看错了问题。我的存储每个用户名作为一个键,每个密码作为值。你知道吗

相关问题 更多 >