我需要将文件拆分为2个单独的数组。我的意思是将username:password
文件拆分为用户名和密码数组,然后能够使用相同的索引号调用它们,以使用户名和密码匹配。到目前为止,我有:
with open('userlist.txt', 'r') as userlist:
for line in userlist:
user, pwd = line.strip().split(':')
我不想将代码拆分为2个不同的变量,而是将它们拆分为2个不同的数组。这样,我可以使用相同的索引号来调用它们以获取user:pass组合。
谢谢。
答案 0 :(得分:2)
Taohidul Islam已经发布了一个技术上完美的解决方案,但:
将username:password文件拆分为一个username数组和一个password数组,然后能够使用相同的索引号对其进行调用,以使username和password匹配
这不是正确的设计。使用此解决方案,您可以依赖长度相同且顺序相同的清单,这是无法保证的,因此充其量是脆弱的(爱荷华州:您可以打赌...会破裂)。
此外,要查找用户及其密码,您需要先进行顺序查找(在“用户名”列表上),然后在第二个列表上进行索引访问,这远非最佳选择。
将键(此处为用户名)与值(此处为密码)“匹配”的正确数据结构是dict
:具有优化键查找(0(1 ),而不是列表中的0(N),所以您真正想要的是:
users = {}
with open('userlist.txt', 'r') as userlist:
for line in userlist:
user, pwd = line.strip().split(':')
users[user] = pwd
答案 1 :(得分:0)
您可以尝试以下方法:
username = list()
password = list()
with open('userlist.txt', 'r') as userlist:
for line in userlist:
user, pwd = line.strip().split(':')
username.append(user)
password.append(pwd)
total_length = len(username)
for i in range(total_length):
print(username[i], password[i])
您可以阅读此resource来了解数据结构。
答案 2 :(得分:0)
我建议使用字典而不是列表:
您可以这样做:
with open("userlist.txt", "r") as f:
# create a nice dict with name to password mapping
name_password_mapping = dict(
line.strip().split(":")
for line in f.readlines()
)
# Access the user password with
user_pass = name_password_mapping["user"]
# do stuff with user and password
# if you want to have the user and the password together as a tuple,
# you can still do:
list_of_user_password_pairings = name_password_mapping.items()
print(list_of_user_password_pairings[0]) # prints ("user0", "pw_user0")