csv - quoting speziallfall

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
qet
User
Beiträge: 2
Registriert: Dienstag 3. Juli 2012, 07:13

Hallo zusammen

ich habe ein Problem betreffend csv, mit welchem ich schon eine Weile anstehe... für Hilfe wäre ich sehr dankbar!


Ich möchte in eine .csv Datei schreiben mit dem quoting=csv.QUOTE_NONNUMERIC, Aber dass alle leeren Felder ohne Anführungszeichen gespeichert werden!

hat jemand eine Idee?

Code: Alles auswählen

csv.register_dialect("style", delimiter=csv_trennStyle, quoting=csv.QUOTE_NONNUMERIC)
writer = csv.writer(open(csvPath + "/" + csvName, "wb"), "style")
writer.writerow(csv_struktur)
for i in list:
   fields = arcpy.ListFields(i)
   cur = arcpy.SearchCursor(i)
        for zeile in cur:
            namen = []
            namen.append(zeile.getValue(f.name))
    
BlackJack

@qet: Wenn es keine `QUOTE_*`-Konstante für Deinen Wunsch gibt, kann man nichts machen.

Bezüglich der Namensgebung könntest Du mal einen Blick in PEP 8 -- Style Guide for Python Code werfen.

Pfade setzt man mit `os.path.join()` zusammen.

Dateien die man geöffnet hat, sollte man auch explizit wieder schliessen, oder noch besser die ``with``-Anweisung verwenden.

`list` ist der Name des eingebauten Typs für Listen — den sollte man nicht an andere Werte binden.

Den Namen `i` sollte man, insbesondere in Schleifen, nur an ganze Zahlen binden. Alles andere ist sehr verwirrend für den Leser.

Man sollte Namen auch nicht abkürzen, solange die Abkürzung nicht allgemein bekannt ist. Quelltext wird öfter gelesen als geschrieben und `cursor` ist beispielsweise verständlicher als `cur`.

Davon abgesehen dass die innerste ``for``-Schleife falsch eingerückt ist, erscheint mir der Schleifenkörper recht sinnfrei. Da wird immer wieder eine neue Liste an den Namen `namen` gebunden und mit genau *einem* Wert bestückt. Und im nächsten Schleifendurchlauf wird die Liste dann wieder verworfen ohne verwendet worden zu sein. Und wo kommt das `f` her?
qet
User
Beiträge: 2
Registriert: Dienstag 3. Juli 2012, 07:13

vielen dank für deine Antwort

der Code wurde abgekürzt, und ist nur zur Varanschaulichung des ungefähren Aufbaues


Das Problem ist, wie man die "" aus den Leeren Stringfeldern im csv kriegt
deets

Entweder nen eigenen Dialect schreiben, oder halt post-processing betreiben. Du koenntest leere Felder zur Sicherheit mit einem Sentinel bestuecken, also zB nem random-string der garantiert nie vorkommt in deinen Daten, um den sicher entfernen zu koennen.
Antworten