J'ai une fonction qui extrait les URL d'ESPN. Les URL ressemblent à ceci http://www.espncricinfo.com/series/13224/scorecard/426406/scotland-vs-england-only-odi-england-in-scotland-odi-match-2010 , http://www.espncricinfo.com/servies/13240/scorecard/426384/Ileland-vs-australia-only-oDi-Australie-tour-fengland-and-ireland-2010
J'ai créé une liste de pays et je voulais imprimer un message si l'URL contient le pays de la liste d'autre PASS pour extraire l'URL suivante P>
all_countries=['England','India','West Indies']
#one_day will have all the links
for day in one_day:
d=day.split('-')
if d in all_countries:
print(day)
else:
next
4 Réponses :
C'est parce que .split () code> renvoie une liste. Vous devriez itérer les éléments de votre liste. Essentiellement ce que vous demandez à l'ordinateur est si for word in d:
if word in all_countries:
print(word)
break # otherwise multiple words will trigger your logic multiple times
Je pense que si nous spécifions .split () code> ["http://www.espncricinfo.com/series/13224/scorecard/426406/ Scotland", "vs", "L'Angleterre "," Seulement "," ODI "," England "," In "," Scotland "," ODI "," Match "," 2010 "] code> est produit et le dernier mot du premier index est ignoré dans ce cas qui est malheureusement un nom de pays. Il serait préférable que nous puissions utiliser Regex et spécifier les séparateurs de Split selon l'exigence. Par exemple: importer re code> d = re.split ("[^ a-za-z]", jour) code>
@KiranmayemAddi hmmm, ouais bon point. Bien que OP puisse .split ("/") code> s'ils voulaient vraiment traiter les parties de l'URL au début! Merci d'avoir souligné cela
Voici un moyen simple de le faire (en supposant que one_day code> est une liste des URL, et all_countries code> est une liste des noms de pays): for day in one_day:
day_split = day.split('-')
for elem in day_split:
if elem in [c.lower() for c in all_countries]:
print(f'found a match: `{day}`')
ou avec regex est plus flexible;): résultats: p>
Je n'aime pas regex. Comme dit le proverbe, "il y avait une fois un programmeur qui a eu un problème. Il a décidé qu'il le résoudrait avec regex. Il avait maintenant deux problèmes" xD
J'ai trois problèmes parce que je suis chimiste ^^. Mais Regex est très cool lorsque vous souhaitez coder quelque chose qui correspond à des trucs de flexibilité :)
Cela semble intéressant. Avez-vous des liens que je peux me référer pour comprendre cette méthode et en savoir plus?
Dans votre cas
all_countries=['England','India','West Indies']
for day in one_day:
d=day.split('-')
for val in d:
if val.lower() in [x.lower() for x in all_countries ]:
print(day)
else:
next
Ajoutez votre liste de pays
Supprimer
else: suivant code>.Notez que
d code> contient une liste. Mais vous comparez-le contre les chaînes, doncsi d dans all_countries code> échouera toujours.J'ai peur que
d code> n'est pas ce que vous pensez. Regardez cela.Lire ERICLIPPERT.COM/2014/03/05/Commander- Pour déboguer-petits programmes pour quelques conseils sur le débogage de votre code. En particulier, vous devez ajouter
print (d) code> pour voir sa valeur.d = jour.split ('-') code> donnera une liste telle que["Ecosse", "vs", "Angleterre", "seulement"] code>. Cette liste, dans son ensemble, n'est certainement pas présente dansAll_Countries Code>.Notez que
else: suivant code> ne fait pas ce que vous pensez que cela le fait et que vous pouvez le supprimer entièrement.J'ai ajouté la liste de pays. Pour confirmer, si la liste n'a pas le nom de pays, il devrait passer à une autre fonction. Donc, nous n'avons pas à utiliser autre: prochain ici?
Votre logique pour analyser l'URL doit être plus sophistiquée. Tout d'abord, vous pouvez tout ignorer avant le dernier
/ code>. Deuxièmement, vous devez trouver uniquement les noms de pays dans le reste de la chaîne.Merci à tous pour votre soutien et votre aide. Je l'ai travaillé :)