¿Cómo obtener la posición de un personaje en Python?

¿Cómo puedo obtener la posición de un carácter dentro de una cadena en python?

Hay dos métodos de cadena para esto, find() y index(). La diferencia entre ambos es lo que ocurre cuando no se encuentra la cadena de búsqueda. find() devuelve -1 y index() lanza ValueError.

Usando find()

>>> myString = 'Position of a character'
>>> myString.find('s')
2
>>> myString.find('x')
-1

Usando index()

>>> myString = 'Position of a character'
>>> myString.index('s')
2
>>> myString.index('x')
Traceback (most recent call last):
  File "", line 1, in 
ValueError: substring not found

Del manual de Python

cadena.encontrar(s, sub[, inicio[, fin]]) Devuelve el índice más bajo en s donde se encuentra la subcadena sub tal que sub está totalmente contenida en s[inicio:fin]. Devuelve -1 en caso de fallo. Los valores por defecto para start y end y la interpretación de los valores negativos es la misma que para las rebanadas.

Y:

string.index(s, sub[, start[, end]]) Como find() pero lanza ValueError cuando no se encuentra la subcadena.

Comentarios (3)
>>> s="mystring"
>>> s.index("r")
4
>>> s.find("r")
4

"Largo camino"

>>> for i,c in enumerate(s):
...   if "r"==c: print i
...
4

para obtener la subcadena,

>>> s="mystring"
>>> s[4:10]
'ring'
Comentarios (4)
string.find(character)  
string.index(character)  

Quizás quieras echar un vistazo a la documentación para saber cuál es la diferencia entre ambos.

Comentarios (1)