Diciamo che ho una stringa composta da x caratteri sconosciuti. Come posso ottenere char nr. 13 o char nr. x-14?
Risposte:
Per prima cosa assicurati che il numero richiesto sia un indice valido per la stringa dall'inizio o dalla fine, quindi puoi semplicemente usare la notazione dell'indice dell'array. utilizzare len(s)per ottenere la lunghezza della 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
>>>
s[-5]può funzionare, ma s[-6]si lamenterebbe di un errore di indice fuori intervallo? Così curioso dell'implementazione nell'oggetto stringa in Python.
In [1]: x = "anmxcjkwnekmjkldm!^%@(*)#_+@78935014712jksdfs"
In [2]: len(x)
Out[2]: 45
Ora, per gli intervalli di indice positivi per x va da 0 a 44 (cioè 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 l'indice negativo, l'indice varia 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] cioè l'ultimo valore valido dell'indice positivo darà il secondo elemento della lista mentre l'elenco viene letto in ordine inverso,
In [8]: x[-44]
Out[8]: 'n'
Altro, esempi di indice,
In [9]: x[1]
Out[9]: 'n'
In [10]: x[-9]
Out[10]: '7'
Le risposte precedenti riguardano ASCII characterun certo indice.
È un po 'problematico ottenere Unicode characterun determinato indice in Python 2.
Ad esempio, con il s = '한국中国にっぽん'quale è <type 'str'>,
__getitem__, ad esempio, s[i]non ti porta dove desideri. Sputerà qualcosa del genere �. (Molti caratteri Unicode sono più di 1 byte ma __getitem__in Python 2 è incrementato di 1 byte.)
In questo caso di Python 2, puoi risolvere il problema decodificando:
s = '한국中国にっぽん'
s = s.decode('utf-8')
for i in range(len(s)):
print s[i]
Python.org ha un'eccellente sezione sulle stringhe qui . Scorri verso il basso fino a dove dice "notazione fetta".
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
Penso che questo sia più chiaro che descriverlo a parole
s = 'python'
print(len(s))
6
print(s[5])
'n'
print(s[len(s) - 1])
'n'
print(s[-1])
'n'