2012-01-13 9 views

risposta

80

Per prima cosa assicurarsi che il numero richiesto sia un indice valido per la stringa dall'inizio o alla fine, quindi è possibile utilizzare semplicemente la notazione di indice di matrice. uso len(s) arrivare lunghezza stringa

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

È possibile passare interi negativi –

+0

@AviramSegal Grazie per la correzione, sì, possiamo, ma dovrebbero anche essere nei limiti della lunghezza della stringa. – DhruvPathak

+1

dopo la modifica è la migliore risposta, votata invece che in basso :) –

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

Ora, per indice positivo intervalli di x è dallo 0 al 44 (cioè la lunghezza - 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' 

Per indice negativo, indice varia da Da -1 a -45

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

Per l'indice negativo, negativo [lunghezza -1] vale a dire l'ultimo valore valido ue di indice positivo darà secondo elemento elenco come l'elenco viene letta in ordine inverso,

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

Altri esempi di indice,

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

Dovresti offrire qualche descrizione verbale di ciò che sta accadendo, anche se la domanda potrebbe sembrare basilare per te. – Hannele

+0

Aggiornato la risposta con qualche descrizione, spero che aiuti :) – avasal

0

Questo dovrebbe chiarire ulteriormente i punti:

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') 

Ingresso 3 Uscita m

Ingresso -3 uscita p

1

Un'altra exersice consigliato per comprendere le liste e gli indici:

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

0 
a 
1 
b 
2 
c 
3

Python.org ha una sezione eccellente sulle stringhe here. Scorri verso il basso fino a dove dice "notazione di sezione".

0

Le risposte precedenti coprono circa ASCII character con un determinato indice.

E 'un po' fastidioso per ottenere un Unicode character ad un determinato indice in Python 2.

Ad esempio, con s = '한국中国にっぽん' che è <type 'str'>,

__getitem__, ad esempio, s[i], non porta sui cui desideri. Sputerà semething come . (Molti caratteri Unicode sono più di 1 byte, ma __getitem__ in Python 2 viene incrementato di 1 byte.)

In questo caso Python 2, è possibile risolvere il problema di decodifica:

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