10
votes

Comment rechercher si une chaîne est contenue dans une autre chaîne

> "D:\Python25\pythonw.exe"  "D:\zjm_code\kml\a.py" 
Traceback (most recent call last):
  File "D:\zjm_code\kml\a.py", line 4, in <module>
    print a.index('s')
ValueError: substring not found

3 commentaires

C'est un duplicata d'une autre question: Stackoverflow.com/questions/3437059/...


une chaîne dans une autre chaîne? tu l'as dit. c'est python


@Anderson: D'accord, il devrait être fermé comme dupliqué.


7 Réponses :


9
votes
print a.find('s')    # -1
print a.find('1234') # 0

0 commentaires

15
votes

Essayez d'utiliser Rechercher () à la place - cela vous indiquera où il se trouve dans la chaîne: xxx

si vous voulez juste savoir si < / em> la chaîne est là, vous pouvez utiliser dans : xxx


0 commentaires

4
votes

Vous pouvez utiliser l'opérateur dans code> si vous souhaitez simplement vérifier si une sous-chaîne se trouve dans une chaîne.

if "s" in mystring:
   print "do something"


0 commentaires

4
votes

str.find () et str.index () sont presque identiques. La plus grande différence est que lorsqu'une chaîne n'est pas trouvée, str.index () jette une erreur, comme celui que vous avez obtenu, tandis que str.find () retour -1 Comme d'autres ont affiché.

Il y a 2 méthodes soeurs appelées str.rfind () et str.rindex () qui démarrent la recherche à partir de la fin de la chaîne et fonctionnent leur chemin vers le Commençant.

En outre, comme d'autres déjà affichés, le dans Opérateur (ainsi que pas dans ) sont parfaitement valables aussi.

Enfin, si vous essayez de chercher modèles au sein des chaînes, vous pouvez envisager des expressions régulières, bien que je pense que trop de personnes les utilisent quand elles sont excédentaires. Dans d'autres mots (célèbres), " Vous avez maintenant deux problèmes . "

C'est ça aussi loin que toutes les informations que j'ai pour l'instant. Cependant, si vous apprenez Python et / ou apprendre une programmation, un exercice très utile que je donne à mes étudiants est d'essayer de construire * trouver () et * index () Dans le code Python vous-même, ou même dans et pas dans (bien que des fonctions). Vous aurez de bonnes pratiques traversera les chaînes, et vous aurez une meilleure compréhension jusqu'à la manière dont fonctionnent les méthodes de chaîne existantes.

bonne chance!


2 commentaires

Expressions régulières une overcilleuse ?! Pourquoi? Il n'y a probablement pas de manière plus efficace et claire de programmation de la plupart des algorithmes correspondants à chaîne.


Pour des recherches simples pouvant être faites avec des outils tels que TROUVER () et Index (), les expressions régulières ne sont pas aussi bons choix car ils ont tendance à être difficiles à lire sans inspection prudente. Il est rare d'être capable d'écouler devant une regexp et de prendre tous les détails de ce que cela essaie de faire. Ils peuvent être très efficaces pour des modèles complexes, mais la maintenabilité peut être un problème.



0
votes

Ceci est la bonne façon de vérifier si une sous-chaîne est présente dans une chaîne ou non.

def Sea (Str, STR1): P>

if(str1[0:] in str):

    return "yes"
else:
    return "no"
print(sea("sahil","ah"))


0 commentaires

0
votes

Essayons cela selon ci-dessous mentionné.

Méthode 1: P>

 if "substring" in "string":
  print("found")
 else:
   print("not found")


0 commentaires

1
votes
def substr(s1, s2):  # s1='abc' , s2 = 'abcd'
    i = 0
    cnt = 0
    s = ''
    while i < len(s2):
        if cnt < len(s1):
            if s1[cnt] == s2[i]:
                cnt += 1
                s += s2[i]
            else:
                cnt = 0
                s = ''
        i += 1
    if s == s1:
        print(f'{s1} is substring of {s2}')
    else:
        print(f'{s1} is not a substring of {s2}') 

2 commentaires

Quelle est la question?


Si une chaîne contenant une autre chaîne en tant que sous-chaîne. C'est la question.