63 votes

Exemples de recherche de chaîne en Python

J'essaie de trouver des exemples, mais sans succès. Quelqu'un connaît-il des exemples sur le net ? J'aimerais savoir ce qu'il retourne lorsqu'il ne peut pas trouver, et comment spécifier le début et la fin, ce qui, je suppose, sera 0, -1.

0 votes

Vous demandez docs.python.org/library/stdtypes.html#id4 ? Posez-vous des questions sur la méthode find, en particulier ? docs.python.org/library/stdtypes.html#str.find

0 votes

Merci, oui, juste la méthode de recherche. J'ai trouvé cette page mais pas d'exemples.

0 votes

C'est écrit -1 sur la page. Qu'aviez-vous besoin de savoir de plus ?

112voto

Paolo Bergantino Points 199336

Je ne suis pas sûr de ce que vous cherchez, voulez-vous dire find() ?

>>> x = "Hello World"
>>> x.find('World')
6
>>> x.find('Aloha');
-1

1 votes

Merci, qu'est-ce que vous obtenez, s'il ne peut pas trouver ?

1 votes

Merci, mais pourquoi -1 ici, et pas pour l'index ? Je pensais que Python préférait les exceptions aux valeurs de retour spéciales.

0 votes

Merci SilentGhost, j'ai utilisé votre méthode.

44voto

SilentGhost Points 79627

vous pouvez utiliser str.index aussi :

>>> 'sdfasdf'.index('cc')
Traceback (most recent call last):
  File "<pyshell#144>", line 1, in <module>
    'sdfasdf'.index('cc')
ValueError: substring not found
>>> 'sdfasdf'.index('df')
1

4 votes

Pourquoi choisir l'un plutôt que l'autre ?

1 votes

il soulève l'erreur au lieu de retourner un code, ce qui est plus pythique, à mon avis.

7 votes

Les exceptions ne doivent pas être utilisées pour le contrôle de flux. Ainsi, n'utilisez index() que si aucune correspondance ne serait anormale.

30voto

Phil H Points 10133

De la documentation :

str.find(sub[, start[, end]])

Retourne l'indice le plus bas dans la chaîne où substring sous se trouve dans la tranche s[start:end] . Arguments facultatifs commencer et fin sont interprétés comme dans la notation des tranches. Retourner -1 si sous n'est pas trouvé.

Alors, quelques exemples :

>>> my_str = 'abcdefioshgoihgs sijsiojs '
>>> my_str.find('a')
0
>>> my_str.find('g')
10
>>> my_str.find('s', 11)
15
>>> my_str.find('s', 15)
15
>>> my_str.find('s', 16)
17
>>> my_str.find('s', 11, 14)
-1

17voto

Dana Points 9876

Honnêtement, c'est le genre de situation où j'ouvre simplement Python en ligne de commande et où je commence à m'amuser :

 >>> x = "Dana Larose is playing with find()"
 >>> x.find("Dana")
 0
 >>> x.find("ana")
 1
 >>> x.find("La")
 5
 >>> x.find("La", 6)
 -1

L'interpréteur de Python facilite ce genre d'expérimentation. (Il en va de même pour les autres langages dotés d'un interpréteur similaire).

0 votes

IPython rend ce genre de choses encore meilleures.

6voto

LucianNovo Points 80

Si vous voulez rechercher la dernière instance d'une chaîne dans un texte, vous pouvez exécuter rfind.

Exemple :

   s="Hello"
   print s.rfind('l')

sortie : 3

*pas d'importation nécessaire

Syntaxe complète :

stringEx.rfind(substr, beg=0, end=len(stringEx))

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