csv lineterminator
Verfasst: Montag 9. Mai 2011, 10:39
Hallo,
ich habe *.csv-Dateien, die ich einlesen muss. Funktioniert so weit auch, allerdings kommt es manchmal vor, das gewisse Spalten Kommentare enthalten können, die manchmal auch mehrzeilig sein können. Lasse ich mir die Zeilenenden in einem Editor mit ausgeben sieht das ganze so aus:
Nun ist meine Frage, wie ich dem csv-Modul beibringen kann, zwischen diesen Seperatoren zu unterscheiden. Als lineterminator '\r\n' zu verwenden scheint nicht zu funktionieren. Hier ist der von mir verwendete Dialekt:
Die Methode zum Einlesen der Datei:
ich habe *.csv-Dateien, die ich einlesen muss. Funktioniert so weit auch, allerdings kommt es manchmal vor, das gewisse Spalten Kommentare enthalten können, die manchmal auch mehrzeilig sein können. Lasse ich mir die Zeilenenden in einem Editor mit ausgeben sieht das ganze so aus:
Code: Alles auswählen
...
wert;wert;wert;einzeiliges Kommentar;wert;wert CRLF
wert;wert;wert;hier kommt ein CR
mehrzeiliges Kommentar;wert;wert CRLF
...Code: Alles auswählen
class CsvDialect(csv.dialect):
quotechar = str('\x07')
delimiter = str(';')
lineterminator = str('\r\n')
doublequote = False
skipinitialspace = True
quoting = csv.QUOTE_NONE
escapechar = str('\\')Code: Alles auswählen
def read_csv_file(filename):
with open(filename, 'rb') as csvfile:
reader = csv.reader(csvfile, CsvDialect())
return [row for row in reader]