linux-l: Problem mit Python und regulaeren Ausdruecken
Fabian Walk
fabian at narf.in-berlin.de
Di Apr 24 12:11:57 CEST 2001
Hallo,
heute brauche ich mal einen Rat von den Python-Experten unter euch.
Wahrscheinlich ist mein Problem trivial, aber ich komme einfach nicht
weiter.
Ich bin dabei einen Dateinamenkonverter zu schreiben der alle Leer-
zeichen durch "_" ersätzt und alle Sonderzeichen wie "| & ; ( ) < > []"
aus dem Dateinamen entfernt, diesen in Kleinbuchstaben umwandelt und die
Datei umbenennt.
Mein Problem ist nun einen einigermassen günstigen Weg zu finden der
die entsprechenden Umwandlungen durchführt. Ich habe es mit dem re Modul
von Python probiert, aber mein regulärer Ausdruck hat nicht den erwünschten
Erfolg. Wie müsste ich den Ausdruck formulieren das die Sonderzeichen
gefrunden und entfernt werden? Ich hab es erstmal mit re.match probiert
um zu testen was ob was gefunden wird zu ersetzen wollte ich dann
re.sub verwenden. Gibt es vieleicht noch eine bessere Methode als mit
regulären Ausdrücken?
Hier der Auszug aus meinem Programm:
------ snip ------
def renamefile(file):
rexp = re.compile("(\||\&|;|\(|\)|<|>|[|]| )+")
file_path = os.path.dirname(file)
file_alt = os.path.basename(file)
file_neu = os.path.normcase(string.lower(file_alt))
if v_flag == 1:
print file_alt + " --> " + file_neu
print rexp.search(file_neu)
if i_flag == 0:
try:
# os.rename(os.path.join(file_path,file_alt), os.path.join(file_path,file_neu))
except IOError:
usage("File rename failed")
if os.path.exists(os.path.join(file_path,file_neu)):
print ("File exist")
return
else:
try:
# os.rename(os.path.join(file_path,file_alt), os.path.join(file_path,file_neu))
except IOError:
usage("File rename failed")
------ snap ------
Danke im Vorraus für eure Hilfe
Bye Fabian
--
E-Mailadresse : Fabian Walk <fabian at tuxianer.de>
Homepage : http://www.tuxianer.de/
ICQ UIN : 2884452
Key fingerprint: 9324 8559 621A 8821 17FE 71A9 BE33 DA36 EFB6 D8E9
Mehr Informationen über die Mailingliste linux-l