@sveni_lee: Ein literales Zeilenende ist '\n' und nicht '/n'. Ich würde das mit `rstrip()` entfernen.
Eingerückt wird mit vier Leerzeichen pro Ebene. *Nicht* mit Tabulatorzeichen!
Namen werden klein_mit_unterstrichen geschrieben. Ausnahmen: Konstanten (KOMPLETT_GROSS) und Klassen (MixedCase).
Man sollte langsam aber sicher auf Python 3 umsteigen. Und bei Python 2 schon mal anfangen so zu schreiben das die Portierung einfacher wird. Zum Beispiel den `__future__`-Import machen, der aus der ``print``-Anweisung die `print()`-Funktion macht.
Auch in Python 2 ist `file` nicht zum öffnen von Dateien gedacht, dafür gibt es `open()`. In Python 3 gibt es `file` auch gar nicht mehr.
Dateien die man öffnet, sollte man auch wieder schliessen. Wenn möglich sollte man dazu die ``with``-Anweisung verwenden. Auch wieder um das für Python 3 einfacher zu machen sollte man `io.open()` anstelle von `open()` verwenden.
Lokale Namen mit einem führenden Unterstrich bedeuten üblicherweise das der Name nicht verwendet wird. `_title` wird aber verwendet.
Wenn man Backslashes in literalen Zeichenketten ausserhalb von Escape-Sequenzen verwendet, sollte man die entweder durch einen weiteren Backslash escapen, oder ein ”rohes” Zeichenkettenliteral verwenden.
`str()` auf eine Zeichenkette angewendet hat genau *gar keinen* Effekt. Das ist ja bereits eine Zeichenkette.
Wenn man da am Ende drei Teile aus der Zeile haben möchte, sollte man das aufteilen auf zwei Trennungen beschränken. Aber selbst dann ist ein '-' kein gutes/robustes Trennmerkmal. Kann ja auch im Künstler- oder Albumnamen oder im Titel selbst auftauchen.
Ungetestet:
Code: Alles auswählen
def test():
playlist_filename = 'E:/playlist.m3u'
with io.open(playlist_filename, encoding='cp1251') as lines:
for line in lines:
match = re.search(r'Title \d', line)
if match:
_, track, title = (part.strip() for part in line.split('-', 2))
print('Track:', track)
print('Title:', title)