Hilfe bei UTF-8 Datei auslesen
Verfasst: Samstag 21. Januar 2017, 12:29
Hallo zusammen,
bin neu hier im Forum und auch Python ist für mich neu. Ich möchte aber gern lernen.
Ich möchte ein kleines Programm schreiben, dass mir meine IPTV Playlist sortiert. Die IPTV Playlist soll später in Enigma2 Receiver eingefügt werden. Allerdings sind die Dateien UTF-8 codiert und da entsteht mein erstes Problem.
Kurz über mein Vorhaben:
Es gibt eine Datei namens "SenderListe.txt" .Diese Datei ist mit UTF-8 gespeichert. Da stehen Namen der Sender und dazugehörige Kanal-Referenz zum Sender und sind mit ";" getrennt..
Da die Playlist für Russische IPTV ist, stehen da Kyrillische Zeichen/Namen drin.
SenderListe.txt:
Als erstes wollte ich Die Datei auslesen und in einer Art Datenspeicher sender_liste={} innerhalb des Codes ablegen um später nach Namen im Speicher in einer anderen Datei (Playlist.m3u) zu suchen und entsprechende Kanalreferenz dazuschreiben.
Alledings habe ich schon jetzt Problemme beim Auslesen. Und Zwar ganz am Anfang der ersten Zeile steht : "\ufeff" drin.
und am Ende: "\r\n"
siehe hier:
Wie kriege ich diese Zeichen ("\ufeff" und "\r\n") weg?
Was muss ich machen um später auf jeweilige Daten zuzugreifen Bsp. sender_liste.name bzw. sender_liste.referenz
hier ist mein Code, aber nicht lachen, wie gesagt das sind meine erste Erfahrungen mit Python/Programmierung.
Ich hoffe ihr könnt mir da weiterhelfen.
Vielen Dank im Voraus.
bin neu hier im Forum und auch Python ist für mich neu. Ich möchte aber gern lernen.
Ich möchte ein kleines Programm schreiben, dass mir meine IPTV Playlist sortiert. Die IPTV Playlist soll später in Enigma2 Receiver eingefügt werden. Allerdings sind die Dateien UTF-8 codiert und da entsteht mein erstes Problem.
Kurz über mein Vorhaben:
Es gibt eine Datei namens "SenderListe.txt" .Diese Datei ist mit UTF-8 gespeichert. Da stehen Namen der Sender und dazugehörige Kanal-Referenz zum Sender und sind mit ";" getrennt..
Da die Playlist für Russische IPTV ist, stehen da Kyrillische Zeichen/Namen drin.
SenderListe.txt:
Code: Alles auswählen
Развлекательные-----;1:64:2:0:0:0:0:0:0:0::
ТНТ;4097:0:1:10:521:D:80130000:0:0:0:
ТНТ4;4097:0:1:60:521:D:80420000:0:0:0:
СТС;4097:0:1:C:521:D:800E0000:0:0:0:Alledings habe ich schon jetzt Problemme beim Auslesen. Und Zwar ganz am Anfang der ersten Zeile steht : "\ufeff" drin.
und am Ende: "\r\n"
siehe hier:
Code: Alles auswählen
>>>
============ RESTART: D:\=PYTHON=\Playlist\iptv\playlist_sort.py ============
('\ufeffРазвлекательные-----', '1:64:2:0:0:0:0:0:0:0::\r\n')
('ТНТ', '4097:0:1:10:521:D:80130000:0:0:0:\r\n')
('ТНТ4', '4097:0:1:60:521:D:80420000:0:0:0:\r\n')
('СТС', '4097:0:1:C:521:D:800E0000:0:0:0:')
>>>Was muss ich machen um später auf jeweilige Daten zuzugreifen Bsp. sender_liste.name bzw. sender_liste.referenz
hier ist mein Code, aber nicht lachen, wie gesagt das sind meine erste Erfahrungen mit Python/Programmierung.
Code: Alles auswählen
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import os, sys
import os.path
import codecs
'''-----------------------------CLASSEN--------------------------'''
class Playlist:
def __init__(self):
self.filename='SenderListe.txt'
self.sender_liste={}
def Liste_ins_Speicher(self):
if os.path.exists(self.filename):
datei=codecs.open(self.filename, "r", 'utf-8')
#datei_inhalt=datei.read()
#print(datei_inhalt)
#datei_inhalt=codecs.datei_inhalt.decode('utf-8')
for zeile in datei:
try:
if not zeile:
break
else:
#zeile=zeile.rstrip()
parts=zeile.split(';')
name=parts[0]
referenz=parts[1]
self.sender_liste.update({name:referenz})
except IndexError:
continue
datei.close()
def Ausgeben(self):
for i in self.sender_liste.items():
print(i)
'''-----------------------------CODE--------------------------'''
playlist=Playlist()
playlist.Liste_ins_Speicher()
playlist.Ausgeben()
Vielen Dank im Voraus.