我确信有一个简单的答案,我似乎无法弄清楚什么是最好的解决方案。
我有一个包含以下内容的文本文件:用户名和密码。一个例子如下:
mcgoga12,password
shelby12,password1
我想打开这个文件,然后读入文件。但是,我想将用户名(mcgoga12等)和密码(密码等)存储在两个单独的列表中。
有没有人对如何解析这个问题有具体的建议?
这是我尝试过的:
with open("credentials.txt", "r") as infile:
users = infile.read().rsplit(',',3)
print users
然而,我一直得到这个输出(显然它没有分开它)
['mcgoga12', 'password\nshelby12', 'password1\n']
答案 0 :(得分:2)
文件中有新行,必须使用strip
系列函数明确删除。我们使用rstrip
然后根据line
拆分,
,这将为我们提供一个包含用户名及其相应密码的列表。现在,我们对所有行执行此操作,最后使用data
函数转换zip
,就像这样
with open("credentials.txt", "r") as infile:
data = [line.rstrip().split(",") for line in infile]
usernames, passwords = zip(*data)
print usernames, passwords
# ('mcgoga12', 'shelby12') ('password', 'password1')
如果我们只打印data
,它看起来就像这样
[['mcgoga12', 'password'], ['shelby12', 'password1']]
当我们zip
解包时,它将成为
('mcgoga12', 'shelby12') ('password', 'password1')
当我们说解压缩时,这意味着我们将序列解压缩为函数的参数。例如,
zip(*data)
只是
的简写符号zip(data[0], data[1]...)