Digamos que tengo una cadena que consta de x caracteres desconocidos. ¿Cómo podría obtener el char nr. 13 o char nr. x-14?
91
Primero asegúrese de que el número requerido sea un índice válido para la cadena desde el principio o el final, luego puede simplemente usar la notación de subíndice de matriz. usar len(s)
para obtener la longitud de la cuerda
>>> s = "python"
>>> s[3]
'h'
>>> s[6]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IndexError: string index out of range
>>> s[0]
'p'
>>> s[-1]
'n'
>>> s[-6]
'p'
>>> s[-7]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IndexError: string index out of range
>>>
s[-5]
puede funcionar, peros[-6]
se quejaría de un error de índice fuera de rango? Tengo mucha curiosidad por la implementación en el objeto de cadena en Python.In [1]: x = "anmxcjkwnekmjkldm!^%@(*)#_+@78935014712jksdfs" In [2]: len(x) Out[2]: 45
Ahora, para rangos de índices positivos para x es de 0 a 44 (es decir, longitud - 1)
In [3]: x[0] Out[3]: 'a' In [4]: x[45] --------------------------------------------------------------------------- IndexError Traceback (most recent call last) /home/<ipython console> in <module>() IndexError: string index out of range In [5]: x[44] Out[5]: 's'
Para el índice negativo, el índice varía de -1 a -45
In [6]: x[-1] Out[6]: 's' In [7]: x[-45] Out[7]: 'a
Para el índice negativo, negativo [longitud -1], es decir, el último valor válido del índice positivo dará el segundo elemento de la lista ya que la lista se lee en orden inverso,
In [8]: x[-44] Out[8]: 'n'
Otros, ejemplos de índices,
In [9]: x[1] Out[9]: 'n' In [10]: x[-9] Out[10]: '7'
fuente
Las respuestas anteriores cubren aproximadamente
ASCII character
en un determinado índice.Es un poco problemático obtener un
Unicode character
índice determinado en Python 2.Por ejemplo, con
s = '한국中国にっぽん'
cuál es<type 'str'>
,__getitem__
, por ejemplo,s[i]
no te lleva a donde deseas. Escupirá algo así como�
. (Muchos caracteres Unicode tienen más de 1 byte, pero__getitem__
en Python 2 se incrementa en 1 byte).En este caso de Python 2, puede resolver el problema decodificando:
s = '한국中国にっぽん' s = s.decode('utf-8') for i in range(len(s)): print s[i]
fuente
Python.org tiene una excelente sección sobre cadenas aquí . Desplácese hacia abajo hasta donde dice "notación de corte".
fuente
Otro ejercicio recomendado para comprender listas e índices:
L = ['a', 'b', 'c'] for index, item in enumerate(L): print index + '\n' + item 0 a 1 b 2 c
fuente
Esto debería aclarar aún más los puntos:
a = int(raw_input('Enter the index')) str1 = 'Example' leng = len(str1) if (a < (len-1)) and (a > (-len)): print str1[a] else: print('Index overflow')
Entrada 3 Salida m
Entrada -3 Salida p
fuente
Creo que esto es más claro que describirlo con palabras.
s = 'python' print(len(s)) 6 print(s[5]) 'n' print(s[len(s) - 1]) 'n' print(s[-1]) 'n'
fuente