Thavivelball Thavivelball - 2 months ago 12
Python Question

Print the current number of item in a cycle for x in y

I have this script:

accounts = open("accounts.txt").readlines()

y = [x.strip().split(":") for x in accounts]

for account in y:
print ("Trying with: %s:%s" % (account[0], account[1]))


the file accounts.txt is structred like this:

email1@email.com:test1
email2@email.com:test2
email3@gmail.com:test3


How can i add to the print "Trying with... bla bla" the current line of the account? An output like:

Trying with: email1@email.com:test1 @1
Trying with: email2@email.com:test1 @2
Trying with: email3@email.com:test1 @3

Answer

You can use enumerate(), with the start argument as suggested by @JonClements:

for i, account in enumerate(y, start=1):
    print ("Trying with: %s:%s @%d" % (account[0], account[1], i))

You can also use unpacking to make the line more readable:

for i, (mail, name) in enumerate(y, start=1):
    print ("Trying with: %s:%s @%d" % (mail, name, i))

Finally, as @idjaw notified it, there is a better way to format string which is recommended over the old style:

for i, (mail, name) in enumerate(y, start=1):
    print("Trying with: {}:{} @{}".format(mail, name, i))
Comments