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?
5 Réponses :
['Do Something', 'Do Something', 'Do some something else', 'Do some something else']
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
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
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).
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 delinel'index pour parcourir alors quepour la ligne dans les lignesfera de laligneles chaînes réelles. Vous pourriez être intéressé parenumerate;-)vous vouliez
lignedansrange (len (lines))qui est une séquence d'entiers. Ainsi,lineest un entier, pas une chaîne. Par conséquent,"dog"ne peut pas y être. Vous pouvez attraper cela tout de suite en mettantprint (line)en haut de la boucle.