简体   繁体   中英

How to pull specific parts of a list on each line?

I have a list that spits out information like this: ['username', 'password'], ['username', 'password'], ['username', 'password'] , and so on..

I would like to be able to pull a specific username and password later on. For example: ['abc', '9876'], ['xyz', '1234']

pull abc and tell them the password is 9876 . Then pull xyz and tell them the password is 1234

I tried messing around with the list and I am just drawing a blank on how to do this.

    lines = []
    with open("output.txt", "r") as f:
        for line in f.readlines():
            if 'Success' in line:
                #get rid of everything after word success so only username and password is printed out
                lines.append(line[:line.find("Success")-1])
    for element in lines:
        #split username and password up at : so they are separate entities
        #original output was username:password, want it to be username, password
        parts = element.strip().split(":")
        print(parts)

I want to pull each username and then pull their password as described above

Current output after running through this is ['username', 'password'] . The original output file had extra information that I got rid of which is what the code involving 'Success' took care of

I would like to do this without hardcoding a username in to it. I am trying to automate this process so that it runs through every username and formats it to say, "hi [username}, your password is [123]" , for all of the usernames

I then later would like to be able to only tell the specific user their password. For example, i want to send an email to user abc. that email should only contain the username and password of user abc

Instead of printing parts , append them to a list.

data = []
for element in lines:
    parts = element.strip().split(":")
    data.append(parts)

Then you could convert these into a dictionary for lookup

username_passwords = dict(data)
print(username_passwords['abc'])

If I am understanding this correctly parts is the list that contains [Username:Password]. If that is the case we can assign each value of parts which should only have 2 elements in it to a dictionary as a dictionary pair and then call the username later on.

lines = []
User_Pass = {}
    with open("output.txt", "r") as f:
        for line in f.readlines():
            if 'Success' in line:
                #get rid of everything after word success so only username and password is printed out
                lines.append(line[:line.find("Success")-1])
    for element in lines:
        #split username and password up at : so they are separate entities
        parts = element.strip().split(":")
        User_Pass.update({parts[0] : parts[1]})

Then you can call the password from the username as follows if you know the username:

 x = User_Pass["foo"]

Or as you stated in the comments:

for key, value in User_Pass.items():
    print('Username ' + key + ' Has a Password of ' + value)

it looks like after you do this

lines.append(line[:line.find("Success")-1])

lines = ['username:password', 'username:password'...]

so I would do this

new_list_of_lists = [element.strip().split(":") for element in lines]

new_list_of_lists should now look like [[username, password], [username, password]]

then just do this:

dict_of_usernames_and_passwords = dict(new_list_of_lists)

with a dict you can have now retrieve passwords using usernames. like:

dict_of_usernames_and_passwords['abc']

you can save the dict, using json module, to a file, for easy retrieval.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM