web-dev-qa-db-fra.com

Exemples de recherche de chaîne en Python

J'essaie de trouver des exemples mais pas de chance. Est-ce que quelqu'un connaît des exemples sur le net? J'aimerais savoir ce qu'il retourne quand il ne peut pas être trouvé et comment spécifier du début à la fin, ce qui, je suppose, sera 0, -1.

57
Joan Venge

vous pouvez utiliser str.index too:

>>> '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
41
SilentGhost

Je ne sais pas ce que vous cherchez, vous voulez dire find() ?

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

De ici :

str.find (sous [ début [ fin]])
Renvoie l'index le plus bas de la chaîne où se trouve la sous-chaîne, de sorte que la sous-chaîne est comprise dans la plage [début à la fin] Les arguments facultatifs début et fin sont interprétés comme dans la notation de tranche. Renvoie -1 si sub n'est pas trouvé. "

Donc, quelques exemples:

>>> str = "abcdefioshgoihgs sijsiojs "
>>> str.find('a')
0
>>> str.find('g')
10
>>> str.find('s',11)
15
>>> str.find('s',15)
15
>>> str.find('s',16)
17
>>> str.find('s',11,14)
-1
30
Phil H

Honnêtement, c’est le genre de situation où je viens d’ouvrir Python en ligne de commande et de commencer à déconner:

 >>> 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ète de Python facilite ce type d'expérimentation. (Idem pour d'autres langues avec un interprète similaire)

17
Dana

Si vous souhaitez 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 

* aucune importation nécessaire

Syntaxe complète:

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

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

Renvoie l'index le plus bas de la chaîne où se trouve la sous-chaîne, de sorte que la sous-chaîne est contenue dans la plage [début à la fin]. Les arguments facultatifs start et end sont interprétés comme dans la notation de tranche. Renvoie -1 si sub n'est pas trouvé.

De les docs .

2
MarkusQ

Essaye ça:

with open(file_dmp_path, 'rb') as file:
fsize = bsize = os.path.getsize(file_dmp_path)
Word_len = len(SEARCH_Word)
while True:
    p = file.read(bsize).find(SEARCH_Word)
    if p > -1:
        pos_dec = file.tell() - (bsize - p)
        file.seek(pos_dec + Word_len)
        bsize = fsize - file.tell()
    if file.tell() < fsize:
        seek = file.tell() - Word_len + 1
        file.seek(seek)
    else:
        break
0
Israel Alberto RV

si x est une chaîne et que vous recherchez y une chaîne, il existe deux cas: cas 1: y existe dans x so x.find (y) = l'index (le position) du y dans x . cas 2: y n’existe pas, donc x.find (y) = -1 cette moyenne y n’est pas trouvée dans x. 

0
Nader Elsayed