使用Python和split()解析文本文件

时间:2014-04-09 01:42:25

标签: python list

我确信有一个简单的答案,我似乎无法弄清楚什么是最好的解决方案。

我有一个包含以下内容的文本文件:用户名和密码。一个例子如下:

mcgoga12,password
shelby12,password1

我想打开这个文件,然后读入文件。但是,我想将用户名(mcgoga12等)和密码(密码等)存储在两个单独的列表中。

有没有人对如何解析这个问题有具体的建议?

这是我尝试过的:

with open("credentials.txt", "r") as infile:
    users = infile.read().rsplit(',',3)
    print users

然而,我一直得到这个输出(显然它没有分开它)

['mcgoga12', 'password\nshelby12', 'password1\n']

1 个答案:

答案 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]...)