2012-01-13 19 views

Respuesta

80

Primero asegúrese de que el número requerido es un índice válido para la cadena desde el principio o el final, luego puede simplemente usar la notación del subíndice de matriz. uso len(s) llegar longitud de la cadena

>>> 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 
>>> 
+1

Puede pasar enteros negativos –

+0

@AviramSegal Gracias por la corrección, sí podemos, pero también deben estar en los límites de la longitud de la cuerda. – DhruvPathak

+1

después de su edición es la mejor respuesta, votó en lugar de hacia abajo :) –

5
In [1]: x = "anmxcjkwnekmjkldm!^%@(*)#[email protected]" 
In [2]: len(x) 
Out[2]: 45 

Ahora, por índice positivo rangos de 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 índice negativo, índice varía de -1 a -45

In [6]: x[-1] 
Out[6]: 's' 
In [7]: x[-45] 
Out[7]: 'a 

Para índice negativo, negativo [longitud -1] es decir, el último val válido ue de índice positivo dará segundo elemento de la lista como la lista se lee en orden inverso,

In [8]: x[-44] 
Out[8]: 'n' 

Otros, ejemplos de Index,

In [9]: x[1] 
Out[9]: 'n' 
In [10]: x[-9] 
Out[10]: '7' 
+0

Debe ofrecer una descripción verbal de lo que sucede, aunque la pregunta le parezca básica. – Hannele

+0

Actualicé la respuesta con alguna descripción, espero que ayude :) – avasal

0

Esto debería aclarar aún más el 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

1

Otra exersice recomendado para la comprensión de las listas y los índices:

L = ['a', 'b', 'c'] 
for index, item in enumerate(L): 
    print index + '\n' + item 

0 
a 
1 
b 
2 
c 
3

Python.org tiene una excelente sección sobre cuerdas here. Desplácese hacia abajo hasta donde dice "notación de división".

0

Las respuestas anteriores cubren aproximadamente ASCII character en un cierto índice.

Está un poco molesto para conseguir un Unicode character en un determinado índice en Python 2.

Por ejemplo, la s = '한국中国にっぽん' que es <type 'str'>,

__getitem__, por ejemplo, s[i], no se llevan a donde tu deseas Escupirá algo como . (Muchos caracteres Unicode son más de 1 byte, pero __getitem__ en Python 2 se incrementa en 1 byte.)

En este caso Python 2, se puede resolver el problema mediante la decodificación:

s = '한국中国にっぽん' 
s = s.decode('utf-8') 
for i in range(len(s)): 
    print s[i] 
Cuestiones relacionadas