我确信这个问题有一个简单的答案,我只是似乎无法找出最好的解决方案。
我有一个文本文件,其中包含以下内容:用户名和密码。示例如下:
mcgoga12,password
shelby12,password1
我想打开这个文件,并读入该文件。但是,我想将用户名(mcgoga12 等)和密码(密码等)存储在两个单独的列表中。
有人对如何解析这个有具体的建议吗?
这是我尝试过的:
with open("credentials.txt", "r") as infile:
users = infile.read().rsplit(',',3)
print users
但是,我不断收到此输出(显然它没有将其分开)
['mcgoga12', 'password\nshelby12', 'password1\n']
最佳答案
文件中存在新行,必须使用 strip
系列函数显式删除它们。我们使用rstrip
,然后根据,
分割行
,这将为我们提供一个包含用户名及其相应密码的列表。现在,我们对所有行执行此操作,最后使用 zip
函数转换 data
,如下所示
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')
如果我们只打印数据
,它看起来像这样
[['mcgoga12', 'password'], ['shelby12', 'password1']]
当我们解压zip
它时,它会变成
('mcgoga12', 'shelby12') ('password', 'password1')
当我们说压缩和解包时,这意味着我们将序列解包为函数的参数。例如,
zip(*data)
只是
的简写符号zip(data[0], data[1]...)
关于python - 使用 Python 和 split() 解析文本文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22951294/