Re: Python 2 bestimmte Zeilen lesen?
Verfasst: Mittwoch 17. Dezember 2014, 20:44
Wenn man nach Clean Code programmieren will, ist BJ Lösung stets zu bevorzugen, robust und selbsterklärend.
Seit 2002 Diskussionen rund um die Programmiersprache Python
https://www.python-forum.de/
Nochmals: Mit meinem Konsolenbeispiel wollte ich MrRatlos lediglich eine Möglichkeit aufzeigen, wie er an den filename kommt. Natürlich würde das *so* nicht in den Programmcode gehören...BlackJack hat geschrieben:Und das hardcoden einer magischen Zahl ist IMHO *deutlich* schlimmer...
Code: Alles auswählen
def endswith_(text, endings):
for ending in endings:
if text.endswith(ending):
return True
return False
def get_filename(text, extensions):
if endswith_(text, extensions):
return text.split(':')[-1].strip()
Code: Alles auswählen
>>> line = 'song_begin: As I Lay Dying - 94 hours.mp3'
>>> get_filename(line, ('ogg', 'flac', 'mp3', 'wmv'))
'As I Lay Dying - 94 hours.mp3'
Eben. Da sind wir wieder bei den "verlässlichen" Daten. Ich denke, beim Dateiname einer Audiodatei kann man sich eher darauf verlassen, dass dieser eine "Audioextension" hat als darauf, dass die Zeile mit 'song_begin:' beginnt.BlackJack hat geschrieben:... zumindest nicht in der Zeile stehen die hier gewünscht ist, nämlich die, die mit 'song begin: ' anfangen.
Stimmt. Die Liste ist letztlich entscheidend.BlackJack hat geschrieben:Auf der anderen Seite werden eventuell Dateinamen nicht gefunden wenn sie andere Endungen haben als in der Liste stehen.
Ok, noch ein Punkt für Dich!BlackJack hat geschrieben:Ausserdem sollte man auch den Punkt prüfen denn sonst werden auch Felder als Dateinamen ausgelesen die gar keine sind, ...
Och Menno, dass Python immer alles können muss...BlackJack hat geschrieben:`endswith_()` ist überflüssig — `str.endswith()` kann das bereits.
Gut, Du hast gewonnen! ``startswith`` ist wohl tatsächlich sinnvoller...BlackJack hat geschrieben:Das Aufteilen an Doppelpunkten wird falsche Ergebnisse liefern wenn mindestens ein Doppelpunkt im Dateinamen enthalten ist.
Ich würde bei strukturierten Daten genau das Gegenteil behaupten. Das Format sieht für mich so aus, als wenn alle Informationen zu einem Lied zwischen song_begin und song_end eingeschlossen sind. Wenn irgendwo ein song_end ohne ein song_begin auftritt, dass wäre das ein recht großer Fehler in der Datei.mutetella hat geschrieben:Eben. Da sind wir wieder bei den "verlässlichen" Daten. Ich denke, beim Dateiname einer Audiodatei kann man sich eher darauf verlassen, dass dieser eine "Audioextension" hat als darauf, dass die Zeile mit 'song_begin:' beginnt.BlackJack hat geschrieben:... zumindest nicht in der Zeile stehen die hier gewünscht ist, nämlich die, die mit 'song begin: ' anfangen.