97 votes

Comment récupérer un caractère d'une chaîne de caractères par index ?

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 ?

148voto

DhruvPathak Points 16181

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

1 votes

Vous pouvez passer des entiers négatifs

0 votes

@AviramSegal Merci pour la correction, oui nous pouvons, mais ils devraient aussi être dans les limites de la longueur de la chaîne.

1 votes

Après votre modification, c'est la meilleure réponse, votée en haut au lieu de en bas :)

7voto

avasal Points 6800
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'

0 votes

Vous devez décrire verbalement ce qui se passe, même si la question vous semble élémentaire.

0 votes

Mise à jour de la réponse avec une description, j'espère que cela vous aidera :)

5voto

GyuHyeon Choi Points 727

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]

2voto

Joel Cornett Points 10475

Python.org contient une excellente section sur les chaînes de caractères aquí . Faites défiler la page jusqu'à la mention "slice notation".

1voto

Droogans Points 2098

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

Prograide.com

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.

Powered by:

X