Vamos dizer que tenho uma string que consiste em x caracteres desconhecidos. Como eu poderia obter char nr. 13 ou char nr. x-14?
93
Primeiro, certifique-se de que o número necessário é um índice válido para a string desde o início ou fim, então você pode simplesmente usar a notação de subscrito de array. use len(s)
para obter o comprimento da corda
>>> 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]
pode funcionar, mass[-6]
reclamaria um erro de índice fora do intervalo? Tão curioso sobre a implementação no objeto string em Python.In [1]: x = "anmxcjkwnekmjkldm!^%@(*)#_+@78935014712jksdfs" In [2]: len(x) Out[2]: 45
Agora, para intervalos de índice positivo para x é de 0 a 44 (ou seja, comprimento - 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, o índice varia de -1 a -45
In [6]: x[-1] Out[6]: 's' In [7]: x[-45] Out[7]: 'a
Para índice negativo, negativo [comprimento -1], ou seja, o último valor válido de índice positivo fornecerá o segundo elemento da lista, pois a lista é lida na ordem inversa,
In [8]: x[-44] Out[8]: 'n'
Outros, exemplos de índice,
In [9]: x[1] Out[9]: 'n' In [10]: x[-9] Out[10]: '7'
fonte
As respostas anteriores abrangem cerca de
ASCII character
um determinado índice.É um pouco problemático obter um
Unicode character
em um determinado índice no Python 2.Por exemplo, com o
s = '한국中国にっぽん'
qual é<type 'str'>
,__getitem__
, por exemplo,s[i]
não leva você para onde deseja. Ele vai cuspir quase algo assim�
. (Muitos caracteres Unicode têm mais de 1 byte, mas__getitem__
no Python 2 são incrementados em 1 byte.)Neste caso do Python 2, você pode resolver o problema decodificando:
s = '한국中国にっぽん' s = s.decode('utf-8') for i in range(len(s)): print s[i]
fonte
Python.org tem uma seção excelente sobre strings aqui . Role para baixo até onde diz "notação de fatia".
fonte
Outro exercício recomendado para compreender listas e índices:
L = ['a', 'b', 'c'] for index, item in enumerate(L): print index + '\n' + item 0 a 1 b 2 c
fonte
Isso deve esclarecer ainda mais os pontos:
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 Saída m
Entrada -3 Saída p
fonte
Eu acho que isso é mais claro do que descrever em palavras
s = 'python' print(len(s)) 6 print(s[5]) 'n' print(s[len(s) - 1]) 'n' print(s[-1]) 'n'
fonte