proyectos ejemplos python position character alphabet

python - ejemplos - Obtener la posición del personaje en el alfabeto



django (6)

Acabo de empezar a aprender Python, así que no tengo idea de cuán eficiente es esto comparado con los otros métodos, pero funciona. Además, no importa si el texto es mayúscula, minúscula o si hay alguna puntuación, etc.

Si quieres cambiar todas las letras:

from string import maketrans textin = "abcdefghijklmnopqrstuvwxyz" textout = "cdefghijklmnopqrstuvwxyzab" texttrans = maketrans(textin, textout) text = "qcc, gr umpiq" print text.translate(texttrans)

También funciona para cambiar algunos personajes:

from string import maketrans textin = "81972" textout = "Seios" texttrans = maketrans(textin, textout) text = "811, 9t w7rk2" print text.translate(texttrans)

Estoy 90% seguro de que hay una función incorporada que hace esto.

Necesito encontrar la posición de un personaje en un alfabeto. Entonces, el carácter "b" es la posición 1 (contando desde 0), etc. ¿Alguien sabe cómo se llama la función?

¡Gracias por adelantado!

EDITAR: Lo que estoy tratando de hacer es enviar a todos los personajes X cantidad de "pasos" nuevamente en la apuesta alfa, por lo que si tengo una cadena con "hola" sería "gh" si la enviara un paso . Puede haber una mejor manera de hacerlo, ¿algún consejo?


Aquí hay un método de captura de todo que podría ser útil para alguien ...

def alphabet(arg, return_lower=True): """ Indexing the english alphabet consisting of 26 letters. Note: zero indexed example usage: alphabet(''a'') >> 0 alphabet(25, return_lower=False) >> ''Z'' :param arg: Either type int or type chr specifying the / index of desired letter or ther letter at / the desired index respectivley. :param return_lower: If index is passes, returns letter / with corresponding case. Default is / set to True (lower case returned). :returns: integer representing index of passed character / or character at passed index. """ arg = str(arg) assert arg.isdigit() or arg.isalpha() if arg.isdigit(): if return_lower: return chr(int(arg) + 97).lower() return chr(int(arg) + 97).upper() return ord(arg.lower()) - 97


Puede usar ord () para obtener la posición ASCII de un personaje, y chr () para convertir una posición ASCII en un carácter.

EDITAR: Actualizado para envolver el alfabeto, por lo que a-1 se asigna a z y z + 1 a un

Por ejemplo:

my_string = "zebra" difference = -1 new_string = ''''.join((chr(97+(ord(letter)-97+difference) % 26) for letter in my_string))

Esto creará una cadena con todos los caracteres movidos un espacio hacia atrás en el alfabeto (''ydaqz''). Sólo funcionará para las palabras en minúscula.


Sin la importacion

def char_position(letter): return ord(letter) - 97 def pos_to_char(pos): return chr(pos + 97)


Se llama index . Por ejemplo

>>> import string >>> string.lowercase.index(''b'') 1 >>>

Nota: en Python 3, string.lowercase ha sido renombrado a string.ascii_lowercase .


# define an alphabet alfa = "abcdefghijklmnopqrstuvwxyz" # define reverse lookup dict rdict = dict([ (x[1],x[0]) for x in enumerate(alfa) ]) print alfa[1] # should print b print rdict["b"] # should print 1

rdict es un diccionario que se crea al recorrer el alfabeto, un carácter a la vez. La función de enumeración devuelve una tupla con el índice de lista y el carácter. Invertimos el orden creando una nueva tupla con este código: ( x[1], x[0]) y luego convertimos la lista de tuplas en un diccionario. Como un diccionario es una estructura de datos de tabla (clave, valor) hash, ahora podemos buscar el índice de cualquier carácter alfabético.

Sin embargo, eso no es lo que quiere resolver su problema, y ​​si se trata de una asignación de clase, probablemente obtendría 0 por plagio si lo envía. Para codificar las cadenas, primero cree un SEGUNDO alfabeto que esté organizado de modo que alfa2 [n] sea la forma codificada de alfa [n]. En su ejemplo, el segundo alfabeto se desplazaría solo por dos caracteres, pero también podría barajar aleatoriamente los caracteres o usar algún otro patrón para ordenarlos. Todo esto continuaría trabajando con otros alfabetos como el griego, el cirílico, etc.