0
votes

Python: Besoin d'aide pour rechercher dans une liste de sous-chaînes

Je sais que c'est une question simple, mais j'ai une liste de centaines de chaînes et j'ai besoin d'aide pour en sélectionner quelques-unes. Par exemple, la liste est:

    for line in range(len(lines)):
        if "dog" in line:
            # Do some something
        elif "cat" in line:
            # Do some something else
        else:
            # Do other things

J'ai besoin d'accéder et de manipuler les index qui contiennent le mot "chien". Le code que j'ai jusqu'à présent est:

lines = ["First Sentence dog", "Second Sentence dog", "Third Sentence cat", "Fourth Sentence cat"...]

Merci pour votre aide!

Edit: L'erreur que j'obtiens est TypeError: l'argument de type 'int' n'est pas itérable

Pour être précis, ma question est: Comment puis-je récupérer et faire quelque chose avec la chaîne entière en recherchant une sous-chaîne spécifique à l'intérieur?


2 commentaires

Super que vous montriez vos efforts et le code que vous avez jusqu'à présent! Quelle est votre question à ce stade, votre message ne contient aucun ... :) Notez que pour line in range (len (lines)) fera de line l'index pour parcourir alors que pour la ligne dans les lignes fera de la ligne les chaînes réelles. Vous pourriez être intéressé par enumerate ;-)


vous vouliez ligne dans range (len (lines)) qui est une séquence d'entiers. Ainsi, line est un entier, pas une chaîne. Par conséquent, "dog" ne peut pas y être. Vous pouvez attraper cela tout de suite en mettant print (line) en haut de la boucle.


5 Réponses :


0
votes
['Do Something', 'Do Something', 'Do some something else', 'Do some something else']

0 commentaires

1
votes

vous devez utiliser l'index pour accéder à la chaîne de la liste.

for line in range(len(lines)):
    if "dog" in lines[line]:
        # Do some something
    elif "cat" in lines[line]:
        # Do some something else
    else:
        # Do other things


0 commentaires


1
votes

Vous pouvez essayer la fonction map ().

Définissez d'abord la fonction où vous pouvez faire quelque chose:

list(map(change,lines))

Ensuite, essayez la fonction map (). Si vous voulez une sortie sous forme de liste, alors:

def change(string):
     if string = 'dog':
         #do something
     else:
         #do something


0 commentaires

0
votes

Si vous avez besoin de faire quelque chose sur les lignes, alors vous pouvez penser à les rassembler d'abord dans une liste, puis à leur appliquer une fonction. Une solution pourrait être la suivante:

edited_dog_strings = map(some_function, dog_strings)

Ensuite, vous pouvez appliquer une fonction à tous les éléments de cette liste comme suit:

dog_strings = [x for x in lines if 'dog' in x]

Donc maintenant votre code se compose de deux lignes (et cela pourrait être plus efficace qu'une boucle for).


0 commentaires