How do I iterate through the alphabet?

Question:

  1. In Python, could I simply ++ a char?
  2. What is an efficient way of doing this?

I want to iterate through URLs and generate them in the following way:

www.website.com/term/#
www.website.com/term/a
www.website.com/term/b
www.website.com/term/c
www.website.com/term/d ... 
www.website.com/term/z 
Asked By: MillsOnWheels

||

Answers:

You can use string.ascii_lowercase which is simply a convenience string of lowercase letters,

Python 2 Example:

from string import ascii_lowercase

for c in ascii_lowercase:
    # append to your url

Python 3 Example:

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
from string import ascii_lowercase as alc
for i in alc:
    print(f"www.website.com/term/{i}")

# Result
# www.website.com/term/a
# www.website.com/term/b
# www.website.com/term/c
# ...
# www.website.com/term/x
# www.website.com/term/y
# www.website.com/term/z

Or if you want to keep nesting you can do like so:

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
for i in alc:
    print(f"www.website.com/term/{i}")
    for j in alc:
        print(f"www.website.com/term/{i}{j}")

# Result
# www.website.com/term/a
# www.website.com/term/aa
# www.website.com/term/ab
# www.website.com/term/ac
# ...
# www.website.com/term/ax
# www.website.com/term/ay
# www.website.com/term/az
# www.website.com/term/b
# www.website.com/term/ba
# www.website.com/term/bb
# www.website.com/term/bc
# ...
# www.website.com/term/bx
# www.website.com/term/by
# www.website.com/term/bz
# www.website.com/term/c
# www.website.com/term/ca
# www.website.com/term/cb
# www.website.com/term/cc
# ...
# ...
# ...
# www.website.com/term/z
# www.website.com/term/za
# www.website.com/term/zb
# www.website.com/term/zc
# www.website.com/term/zd
# ...
# www.website.com/term/zx
# www.website.com/term/zy
# www.website.com/term/zz
Answered By: Jared

In addition to string.ascii_lowercase you should also take a look at the ord and chr built-ins. ord('a') will give you the ascii value for 'a' and chr(ord('a')) will give you back the string 'a'.

Using these you can increment and decrement through character codes and convert back and forth easily enough. ASCII table is always a good bookmark to have too.

Answered By: Brian

shortest way

for c in list(map(chr,range(ord('a'),ord('z')+1))):
    do_something(base_url+c)

iterate function

def plusplus(oldChar):
     return chr(ord(oldChar)+1)
plusplus('a') # output - b

Another option

url=www.website.com/term
my_char=ord('a') # convert char to ascii
while my_char<= ord('z'):
   my_char+=1 # iterate over abc
   my_url=url+chr(my_char)  # convert ascii to char
   do_something(my_url)

Based on @Brian answer.

Answered By: yonilobo
Categories: questions Tags: , ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.