Supposons que j'aie une chaîne de caractères composée de x caractères inconnus. Comment puis-je obtenir le caractère n° 13 ou le caractère n° x-14 ?
Vous pouvez passer des entiers négatifs
Supposons que j'aie une chaîne de caractères composée de x caractères inconnus. Comment puis-je obtenir le caractère n° 13 ou le caractère n° x-14 ?
Assurez-vous d'abord que le numéro requis est un index valide pour la chaîne à partir du début ou de la fin, vous pouvez simplement utiliser la notation de l'indice du 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
>>>
@AviramSegal Merci pour la correction, oui nous pouvons, mais ils devraient aussi être dans les limites de la longueur de la chaîne.
In [1]: x = "anmxcjkwnekmjkldm!^%@(*)#_+@78935014712jksdfs"
In [2]: len(x)
Out[2]: 45
Maintenant, pour les plages d'indices positifs, x est compris entre 0 et 44 (c'est-à-dire la 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 est compris entre -1 et -45
In [6]: x[-1]
Out[6]: 's'
In [7]: x[-45]
Out[7]: 'a
Pour un index négatif, la valeur négative [longueur -1], c'est-à-dire la dernière valeur valide de l'index positif, donnera le deuxième élément de la liste lorsque celle-ci sera lue dans l'ordre inverse,
In [8]: x[-44]
Out[8]: 'n'
Autres exemples de l'index,
In [9]: x[1]
Out[9]: 'n'
In [10]: x[-9]
Out[10]: '7'
Les réponses précédentes couvrent environ ASCII character
à un certain indice.
Il est un peu difficile d'obtenir une Unicode character
à un certain index dans Python 2.
Par exemple, avec s = '한국中国にっぽん'
qui est <type 'str'>
,
__getitem__
, par exemple, s[i]
L'idée de l'argent, ne vous mène pas là où vous le souhaitez. Il recrachera quelque chose comme �
. (De nombreux caractères Unicode sont composés de plus d'un octet, mais le nombre de caractères est inférieur à 1 octet. __getitem__
en Python 2 est incrémenté d'un octet).
Dans le cas de 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 contient une excellente section sur les chaînes de caractères aquí . Faites défiler la page jusqu'à la mention "slice notation".
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.