2012-12-23 21 views

Antwort

18

können Sie reguläre Ausdrücke verwenden:

regex = re.compile(r'\d+') 

dann die Saiten zu erhalten, die passen:

regex.findall(filename) 

Dies wird eine Liste von Strings zurück, die die Zahlen enthalten. Wenn Sie tatsächlich ganze Zahlen wollen, könnten Sie int verwenden:

[int(x) for x in regex.findall(filename)] 

Wenn es nur 1 Nummer in jedem Dateinamen, könnten Sie regex.search(filename).group(0) (wenn Sie sicher sind, dass es ein Spiel zu produzieren). Wenn keine Übereinstimmung gefunden wird, erzeugt die obige Zeile einen AttributeError, der besagt, dass NoneType kein Attribut group hat.

+0

Das macht genau das, was ich brauche - vielen Dank. – Borealis

+0

@Aaron - Kein Problem. Ich bin glücklich zu helfen. – mgilson

3

Sie haben also keine Beschreibung hinterlassen, wo diese Dateien sind und wie Sie sie erhalten, aber ich nehme an, dass Sie die Dateinamen mit dem Modul os erhalten würden.

Was die Zahlen aus den Namen bekommen, Sie wäre am besten auf den regulären Ausdrücken mit re verwenden, etwa so:

import re 
def get_numbers_from_filename(filename): 
    return re.search(r'\d+', filename).group(0) 

Dann zu, dass ein gehören in for-Schleife, dann würden Sie Führen Sie diese Funktion für jeden Dateinamen aus:

for filename in os.listdir(myfiledirectory): 
    print get_numbers_from_filename(filename) 

oder etwas in dieser Richtung.

2

Wenn es nur eine Nummer ist:

filter(lambda x: x.isdigit(), filename) 
Verwandte Themen