J'essaie d'éviter d'utiliser autant d'instructions if et de comparaisons et d'utiliser simplement une liste, mais je ne sais pas comment l'utiliser avec str.startswith
:
if link.lower().startswith("js/") or link.lower().startswith("catalog/") or link.lower().startswith("script/") or link.lower().startswith("scripts/") or link.lower().startswith("katalog/"):
# then "do something"
Ce que j'aimerais qu'il soit, c'est:
if link.lower().startswith() in ["js","catalog","script","scripts","katalog"]:
# then "do something"
Toute aide serait appréciée.
Réponses:
str.startswith
vous permet de fournir un tuple de chaînes à tester:if link.lower().startswith(("js", "catalog", "script", "katalog")):
À partir de la documentation :
Voici une démonstration:
>>> "abcde".startswith(("xyz", "abc")) True >>> prefixes = ["xyz", "abc"] >>> "abcde".startswith(tuple(prefixes)) # You must use a tuple though True >>>
la source
any
et un genexp.Vous pouvez également utiliser
any()
,map()
comme ceci:if any(map(l.startswith, x)): pass # Do something
Ou bien, en utilisant une expression de générateur :
if any(l.startswith(s) for s in x) pass # Do something
la source