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?
Réponses:
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, mais s[-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'
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]
Python.org a une excellente section sur les chaînes ici . Faites défiler jusqu'à l'endroit où il est dit "notation de tranche".
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
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'