¿Cómo itero a través del alfabeto?

2 minutos de lectura

avatar de usuario
MillsOnWheels

En Python, ¿podría simplemente ++ un carácter? ¿Cuál es una forma eficiente de hacer esto?

Quiero iterar a través de URL que tienen www.website.com/term/#, www.website.com/term/a, www.website.com/term/b, www.website.com/term/c, www .website.com/term/d … formato www.website.com/term/z.

  • Hay 308 915 776 (26 ^ 6) formas de ensamblar cadenas largas de seis letras a partir de cualquier letra, solo para que sepa si avanza más allá de hacer una sola letra.

    – Patashu

    19 de junio de 2013 a las 4:12

Puedes usar string.ascii_lowercase que es simplemente una cadena de conveniencia de letras minúsculas,

>>> from string import ascii_lowercase
>>> for c in ascii_lowercase:
...     # append to your url

  • Para referencia string.ascii_lowercase proporciona 'abcdefghijklmnopqrstuvwxyz'

    – ¿Qué?

    1 de febrero de 2019 a las 20:46

avatar de usuario
Brian

Además de string.ascii_lowercase también deberías echar un vistazo a la ord y chr incorporados. ord('a') le dará el valor ascii para 'a' y chr(ord('a')) te devolverá la cuerda 'a'.

Con estos, puede aumentar y disminuir a través de códigos de caracteres y convertir de un lado a otro con bastante facilidad. tabla ASCII siempre es un buen marcador para tener también.

  • Además, si tienes manentonces puede obtener la tabla ASCII a través de man ascii.

    – gluk47

    22 de septiembre de 2016 a las 8:26

  • Atención aquí, chr(x) te devolverá el tipo de cadena.

    – Peiti Li

    12 de enero de 2018 a las 7:05


avatar de usuario
yonilobo

camino más corto

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

iterar función

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

Otra opción

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)

Basado en la respuesta de @Brian.

¿Ha sido útil esta solución?