205 votes

Python - Vérifier si Word est dans une chaîne

Je travaille avec Python v2 et j'essaie de savoir si vous pouvez savoir si un mot est dans une chaîne.

J'ai trouvé des informations sur l'identification du mot dans la chaîne - en utilisant .find, mais existe-t-il un moyen de faire une instruction IF? Je voudrais avoir quelque chose comme ce qui suit:

 if string.find(word):
    print 'success'
 

Merci pour toute aide.

401voto

fabrizioM Points 11498

Qu'est-ce qui ne va pas chez:

 if word in mystring: 
   print 'success'
 

186voto

Hugh Bothwell Points 22635
 if 'seek' in 'those who seek shall find':
    print('Success!')
 

mais gardez à l'esprit que cela correspond à une séquence de caractères, pas nécessairement à un mot entier - par exemple, 'word' in 'swordsmith' est vrai. Si vous souhaitez uniquement faire correspondre des mots entiers, vous devez utiliser des expressions régulières:

 import re

def findWholeWord(w):
    return re.compile(r'\b({0})\b'.format(w), flags=re.IGNORECASE).search

findWholeWord('seek')('those who seek shall find')    # -> <match object>
findWholeWord('word')('swordsmith')                   # -> None
 

19voto

bigmattyh Points 9167

find renvoie un entier représentant l'index de l'endroit où l'élément de recherche a été trouvé. S'il n'est pas trouvé, il retourne -1.

 haystack = 'asdf'

haystack.find('a') # result: 0
haystack.find('s') # result: 1
haystack.find('g') # result: -1

if haystack.find(needle) >= 0:
  print 'Needle found.'
else:
  print 'Needle not found.'
 

11voto

Guray Celik Points 153

Cette petite fonction compare tous les mots de recherche dans un texte donné et si tous les mots de recherche trouvés dans une chaîne de texte renvoie la longueur de la recherche.

Prend également en charge la recherche de chaînes unicode.

 #######################################
# find exact words
#######################################
def find_words(text, search):

   dText = {}
   dSearch = {}

   dText = text.split()
   dSearch = search.split()

   lenText = len(dText)
   lenSearch = len(dSearch)
   #print dText, lenText
   #print dSearch, lenSearch

   found_word = 0

   for text_word in dText:
      for search_word in dSearch:
         if hash(search_word) == hash(text_word):
            found_word += 1

   if found_word == lenSearch:
      return lenSearch
   else:
      return False
 

usage:

 find_words('çelik güray ankara', 'güray ankara')
 

9voto

daSong Points 87

Si la correspondance d'une séquence de caractères ne suffit pas et que vous devez faire correspondre des mots entiers, voici une fonction simple qui vous permet d'accomplir votre travail. il ajoute essentiellement des espaces si nécessaire et le recherche dans la chaîne:

 def smart_find(haystack, needle):
    if haystack.startswith(needle+" "):
        return True
    if haystack.endswith(" "+needle):
        return True
    if haystack.find(" "+needle+" ") != -1:
        return True
    return False
 

cela suppose que les virgules et autres ponctuations ont déjà été supprimées.

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