Disons que j'ai une chaîne composée de x caractères inconnus. Comment pourrais-je obtenir le numéro de char. 13 ou char nr. x-14?
91
Assurez-vous d'abord que le nombre requis est un index valide pour la chaîne du début ou de la fin, puis vous pouvez simplement utiliser la notation en indice de tableau. utiliser len(s)
pour obtenir la longueur de la chaîne
>>> 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]
peut fonctionner, maiss[-6]
se plaindrait d'une erreur d'index hors de portée? Tellement curieux de savoir l'implémentation dans l'objet string en Python.In [1]: x = "anmxcjkwnekmjkldm!^%@(*)#_+@78935014712jksdfs" In [2]: len(x) Out[2]: 45
Maintenant, pour les plages d'indice positives pour x est de 0 à 44 (c'est-à-dire longueur - 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'
Pour l'indice négatif, l'indice varie de -1 à -45
In [6]: x[-1] Out[6]: 's' In [7]: x[-45] Out[7]: 'a
Pour un index négatif, négatif [longueur -1] c'est-à-dire que la dernière valeur valide de l'index positif donnera le deuxième élément de la liste lorsque la liste est lue dans l'ordre inverse,
In [8]: x[-44] Out[8]: 'n'
Autres exemples d'index,
In [9]: x[1] Out[9]: 'n' In [10]: x[-9] Out[10]: '7'
la source
Les réponses précédentes couvrent
ASCII character
à un certain index.Il est un peu gênant d'obtenir un
Unicode character
à un certain index dans Python 2.Par exemple, avec
s = '한국中国にっぽん'
lequel est<type 'str'>
,__getitem__
, par exemple,s[i]
ne vous mène pas là où vous le désirez. Il crachera quelque chose comme ça�
. (De nombreux caractères Unicode font plus d'un octet mais__getitem__
en Python 2 est incrémenté d'un octet.)Dans ce cas Python 2, vous pouvez résoudre le problème en décodant:
s = '한국中国にっぽん' s = s.decode('utf-8') for i in range(len(s)): print s[i]
la source
Python.org a une excellente section sur les chaînes ici . Faites défiler jusqu'à l'endroit où il est dit "notation de tranche".
la source
Un autre exercice recommandé pour comprendre les listes et les index:
L = ['a', 'b', 'c'] for index, item in enumerate(L): print index + '\n' + item 0 a 1 b 2 c
la source
Cela devrait clarifier davantage les points:
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')
Entrée 3 Sortie m
Entrée -3 Sortie p
la source
Je pense que c'est plus clair que de le décrire avec des mots
s = 'python' print(len(s)) 6 print(s[5]) 'n' print(s[len(s) - 1]) 'n' print(s[-1]) 'n'
la source