Sie können ein Wrapper-Objekt um Ihre Datei erstellen, das die Leerzeichen entfernt, bevor der CSV-Reader sie sieht. Auf diese Weise können Sie sogar die csv-Datei mit cvs.DictReader verwenden.
import re
class CSVSpaceStripper:
def __init__(self, filename):
self.fh = open(filename, "r")
self.surroundingWhiteSpace = re.compile("\s*;\s*")
self.leadingOrTrailingWhiteSpace = re.compile("^\s*|\s*$")
def close(self):
self.fh.close()
self.fh = None
def __iter__(self):
return self
def next(self):
line = self.fh.next()
line = self.surroundingWhiteSpace.sub(";", line)
line = self.leadingOrTrailingWhiteSpace.sub("", line)
return line
Dann ist es wie folgt verwenden:
o = csv.reader(CSVSpaceStripper(filename), delimiter=";")
o = csv.DictReader(CSVSpaceStripper(filename), delimiter=";")
I ";"
fest einprogrammiert das Trennzeichen zu sein. Die Verallgemeinerung des Codes für jedes Trennzeichen wird dem Leser als Übung überlassen.
Dies ist die bestmögliche Lösung mit dem 'csv' Modul. Die Klasse 'Reader', die von der Funktion' csv.reader() 'zurückgegeben wird, ist im' csv'- oder '_csv'-Modul nicht verfügbar, um das Überschreiben der' next() '-Methode zu ermöglichen. – CivFan