Come ottenere char dalla stringa per indice?


91

Diciamo che ho una stringa composta da x caratteri sconosciuti. Come posso ottenere char nr. 13 o char nr. x-14?

Risposte:


129

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

1
Puoi trasmettere numeri interi negativi
Aviram Segal

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

1
dopo la tua modifica è la risposta migliore, votata a favore invece che giù :)
Aviram Segal

1
Questa risposta potrebbe essere migliorata utilizzando una parola diversa con caratteri univoci in ogni indice. Allo stato attuale s [3] è ambiguo su quale 'l' stia ritornando.
Sii gentile con i nuovi utenti

1
Perché 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.
Alston

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

Dovresti offrire una descrizione verbale di quello che sta succedendo, anche se la domanda può sembrare basilare per te.
Hannele

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

3

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]

2

Python.org ha un'eccellente sezione sulle stringhe qui . Scorri verso il basso fino a dove dice "notazione fetta".


1

Un altro esercizio consigliato per comprendere elenchi e indici:

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

0
a
1
b
2
c 

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


0

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'
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.