Überprüfen Sie, ob String mit einer der Zeichenfolgen aus einer Liste endet

Was ist die pythonische Art, den folgenden Code zu schreiben?

extensions = ['.mp3','.avi'] file_name = 'test.mp3' for extension in extensions: if file_name.endswith(extension): #do stuff 

Ich habe eine vage Erinnerung, dass die explizite Deklaration der for Schleife vermieden und in der if Bedingung geschrieben if kann. Ist das wahr?

4 Solutions collect form web for “Überprüfen Sie, ob String mit einer der Zeichenfolgen aus einer Liste endet”

Obwohl nicht weit bekannt, str.endswith auch akzeptiert ein Tupel. Du brauchst dich nicht zu schleifen

 >>> 'test.mp3'.endswith(('.mp3', '.avi')) True 

Benutz einfach:

 if file_name.endswith(tuple(extensions)): 

Nehmen Sie eine Erweiterung aus der Datei und sehen, ob es in der Reihe von Erweiterungen ist:

 >>> import os >>> extensions = set(['.mp3','.avi']) >>> file_name = 'test.mp3' >>> extension = os.path.splitext(file_name)[1] >>> extension in extensions True 

Verwenden eines Satzes, weil Zeitkomplexität für Lookups in Sets O (1) ( docs ) ist.

Ich habe das:

 def has_extension(filename, extension): ext = "." + extension if filename.endswith(ext): return True else: return False 
  • Zusammenpassen eines Ausdrucks mit ReGex, Python
  • Python - wie man Strings in die Datei ohne Zitate und Leerzeichen schreiben?
  • Unicode re.sub () funktioniert nicht mit \ g <0> (Gruppe 0)
  • Schnellste Weg zu überprüfen, enthält String jedes Wort aus der Liste
  • Ausgewählte wissenschaftliche Zahl aus String extrahieren
  • Split Twitter RSS String mit Python
  • Wie konvertiert man die Liste der intablen Strings in int
  • Validierung von Benutzereingaben in Python
  • Python regex getrennte raumbegrenzte Wörter in eine Liste
  • Ein Fall unempfindlich String Klasse in Python
  • Format nicht ein String-Literal und keine Format-Argumente [-Wastersicherheit]
  • Python ist die beste Programmiersprache der Welt.