csv – Lesen und Schreiben von CSV-Dateien¶

Modulinhalt¶

Die csv definiert die folgenden Funktionen:

csv.reader(csvfile, dialect = „excel“, ** fmtparams ) ¶

Gibt ein Reader-Objekt zurück, das in der angegebenen csvfile.csvfile über Zeilen iteriert. Dies kann ein beliebiges Objekt sein, das das Iterator-Protokoll unterstützt und bei jedem Aufruf der Methode __next__() astring zurückgibt – Dateiobjekte und Listenobjekte sind beide geeignet. Wenn csvfile ein Dateiobjekt ist, sollte es mit newline="" geöffnet werden. 1 Es kann ein optionaldialect-Parameter angegeben werden, mit dem eine Reihe von Parametern definiert wird, die für einen bestimmten CSV-Dialekt spezifisch sind. Dies kann eine Instanz einer Unterklasse der Klasse Dialect oder eine der von der Funktion list_dialects() zurückgegebenen Zeichenfolgen sein. Die anderen optionalen Schlüsselwortargumente fmtparams können angegeben werden, um einzelne Formatierungsparameter im aktuellen Dialekt zu überschreiben. Ausführliche Informationen zu den Dialekt- und Formatierungsparametern finden Sie unter Dialekte und Formatierungsparameter.

Jede aus der CSV-Datei gelesene Zeile wird als Liste von Zeichenfolgen zurückgegeben. Es wird keine automatische Datentypkonvertierung durchgeführt, es sei denn, die Formatoption QUOTE_NONNUMERIC ist angegeben (in diesem Fall werden nicht zitierte Felder in Gleitkommazahlen umgewandelt).

Ein kurzes Verwendungsbeispiel:

csv.writer(csvfile, dialect = „excel“, ** fmtparams) ¶

Gibt ein Writer-Objekt zurück, das für die Konvertierung des verantwortlich ist Benutzerdaten in begrenzte Zeichenfolgen auf dem angegebenen dateiähnlichen Objekt. csvfile kann ein beliebiges Objekt mit einer write() -Methode sein. Wenn csvfile ein Dateiobjekt ist, sollte es mit newline="" 1 geöffnet werden. Es kann ein optionaler Dialektparameter angegeben werden, mit dem eine Reihe von Parametern definiert wird, die für einen bestimmten CSV-Dialekt spezifisch sind. Dies kann eine Instanz einer Unterklasse der Klasse Dialect oder eine der von der Funktion list_dialects() zurückgegebenen Zeichenfolgen sein. Die anderen optionalen Schlüsselwortargumente fmtparams können angegeben werden, um einzelne Formatierungsparameter im aktuellen Dialekt zu überschreiben. Ausführliche Informationen zu den Dialekt- und Formatierungsparametern finden Sie unter Dialekte und Formatierungsparameter. Um die Schnittstelle zu Modulen, die die DB-API implementieren, so einfach wie möglich zu gestalten, wird der Wert None als leere Zeichenfolge geschrieben. Dies ist zwar keine reversible Umwandlung, erleichtert jedoch das Speichern von SQL-NULL-Datenwerten in CSV-Dateien, ohne die von einem cursor.fetch* -Aufruf zurückgegebenen Daten vorzuverarbeiten. Alle anderen Nicht-String-Daten werden mit Zeichenfolgen versehen str() vor dem Schreiben.

Ein kurzes Anwendungsbeispiel:

csv.register_dialect(name]) ¶

Dialekt mit Name verknüpfen. Name muss eine Zeichenfolge sein. Der Dialekt kann entweder durch Übergeben einer Unterklasse von Dialect oder durch Schlüsselwortargumente von fmtparams oder durch beides angegeben werden, wobei Schlüsselwortargumente die Parameter des Dialekts überschreiben. Ausführliche Informationen zu den Dialekt- und Formatierungsparametern finden Sie im Abschnitt Dialekte und Formatierungsparameter.

csv.unregister_dialect(name) ¶

Löschen Sie den mit dem Namen verknüpften Dialekt aus der Dialektregistrierung. Ein Error wird ausgelöst, wenn der Name kein registrierter Dialektname ist.

csv.get_dialect(name) ¶

Gibt den mit name verknüpften Dialekt zurück. Ein Error wird ausgelöst, wenn name kein registrierter Dialektname ist. Diese Funktion gibt eine unveränderliche Dialect zurück.

csv.list_dialects() ¶

Gibt die Namen aller registrierten Dialekte zurück.

csv.field_size_limit() ¶

Gibt die aktuelle maximale Feldgröße zurück vom Parser erlaubt. Wenn new_limit angegeben wird, wird dies zum neuen Limit.

Das Modul csv definiert die folgenden Klassen:

classcsv.DictReader(f, Feldnamen = Keine, Restkey = Keine, Restval = Keine, Dialekt = „Excel“, * Argumente, ** Kwds) ¶

Erstellen Sie ein Objekt Dies funktioniert wie ein normaler Leser, ordnet die Informationen in jeder Zeile jedoch einem dict zu, dessen Schlüssel durch den optionalen Parameter fieldnames angegeben werden.

Der Parameter fieldnames ist eine Sequenz. Wenn Feldnamen nicht angegeben werden, werden die Werte in der ersten Zeile der Datei f als Feldnamen verwendet. Unabhängig davon, wie die Feldnamen bestimmt werden, behält das Wörterbuch seine ursprüngliche Reihenfolge bei.

Wenn eine Zeile mehr Felder als Feldnamen enthält, werden die verbleibenden Daten in eine Liste aufgenommen und mit dem von restkey angegebenen Feldnamen gespeichert (standardmäßig None). Wenn eine nicht leere Zeile weniger Felder als Feldnamen enthält, werden die fehlenden Werte mit dem Wert von restval (der standardmäßig None ist) ausgefüllt.

Alle anderen optionalen oder Schlüsselwortargumente werden an die zugrunde liegende reader -Instanz übergeben.

In Version 3.6 geändert: Zurückgegebene Zeilen sind jetzt vom Typ OrderedDict.

In Version 3.8 geändert: Zurückgegebene Zeilen sind jetzt vom Typ dict.

Ein kurzes Verwendungsbeispiel:

classcsv.DictWriter( f, fieldnames, restval = „“, extrasaction = „raise“, dialect = „excel“, * args, ** kwds) ¶

Erstellen Sie ein Objekt, das wie ein normaler Writer funktioniert, aber Wörterbücher auf Ausgabezeilen abbildet. Der Parameter fieldnames ist eine sequence von Schlüsseln, die die Reihenfolge angeben, in der Werte im Wörterbuch, die an die writerow() -Methode übergeben werden, in filef geschrieben werden. Der optionale Parameter restval gibt den Wert an, der geschrieben werden soll, wenn im Wörterbuch ein Schlüssel in Feldnamen fehlt. Wenn das an die Methode writerow() übergebene Wörterbuch einen Schlüssel enthält, dessen Infieldnamen nicht gefunden wurden, gibt der optionale Parameter extrasaction an, welche Aktion ausgeführt werden soll. Wenn er auf "raise" wird der Standardwert a ValueError ausgelöst. Wenn er auf "ignore" gesetzt ist, werden zusätzliche Werte im Wörterbuch ignoriert Optionale oder Schlüsselwortargumente werden an die zugrunde liegende writer -Instanz übergeben.

Beachten Sie, dass im Gegensatz zur DictReader -Klasse die Feldnamen Der Parameter der Klasse DictWriter ist nicht optional.

Ein kurzes Verwendungsbeispiel:

classcsv.Dialect

Die Klasse Dialect ist eine Containerklasse, die hauptsächlich für ihre Attribute verwendet wird, mit denen die Parameter für ein bestimmtes reader oder writer Instanz.

Klassecsv.excel

Die Klasse excel definiert die üblichen Eigenschaften einer von Excel generierten CSV-Datei. Es ist unter dem Dialektnamen "excel" registriert.

classcsv.excel_tab

Die Klasse excel_tab definiert die üblichen Eigenschaften einer durch Excel generierten, durch TAB getrennten Datei. Es ist mit dem Dialektnamen "excel-tab" registriert.

classcsv.unix_dialect

Die Klasse unix_dialect definiert die üblichen Eigenschaften einer auf UNIX-Systemen generierten CSV-Datei, dh die Verwendung von "\n" als Zeilenabschluss und Anführungszeichen für alle Felder. Es ist mit dem Dialektnamen "unix" registriert.

Neu in Version 3.2.

classcsv.Sniffer

Die Klasse Sniffer wird verwendet, um das Format einer CSV-Datei abzuleiten.

Die Klasse Sniffer bietet zwei Methoden:

sniff(Beispiel, Trennzeichen = Keine) ¶

Analysieren das gegebene Beispiel und geben Sie eine Dialect -Unterklasse zurück, die die gefundenen Parameter widerspiegelt. Wenn der optionale Begrenzerparameter angegeben ist, wird er als Zeichenfolge interpretiert, die mögliche Validdelimiter-Zeichen enthält.

has_header(Beispiel) ¶

Analysieren Sie den Beispieltext (vermutlich in CSV-Format) und geben Sie True zurück, wenn die erste Zeile eine Reihe von Spaltenüberschriften zu sein scheint.

Ein Beispiel für Sniffer use:

Das Modul csv definiert die folgenden Konstanten:

csv.QUOTE_ALL

Weist writer Objekte an, alle Felder in Anführungszeichen zu setzen.

csv.QUOTE_MINIMAL

Weist writer Objekte an, nur die Felder in Anführungszeichen zu setzen, die spezielle Zeichen wie Trennzeichen, Anführungszeichen oder eines der Zeichen inlineterminator enthalten. P. > csv. QUOTE_NONNUMERIC

Weist writer Objekte an, alle nicht numerischen Felder in Anführungszeichen zu setzen

Weist den Leser an, zu konv Geben Sie alle nicht in Anführungszeichen gesetzten Felder ein, um float einzugeben.

csv.QUOTE_NONE

Anweisungen writer Objekte, die niemals Felder zitieren. Wenn der aktuelle Begrenzer in den Ausgabedaten vorkommt, geht ihm das aktuelle Escapeecharcharacter voraus. Wenn die Escape-Zeichenfolge nicht festgelegt ist, löst der Writer Error aus, wenn Zeichen gefunden werden, die ein Escapezeichen erfordern.

Weist reader an Um keine spezielle Verarbeitung von Anführungszeichen durchzuführen.

Das Modul csv definiert die folgende Ausnahme:

Ausnahmecsv.Error

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.