Verwendung des csv-Moduls

27/08/2009 - 15:38 von Ole Streicher | Report spam
Hallo,

mir ist nicht so ganz klar, wie ich den "csv-Writer" korrekt verwende.

Ich habe zwei Datenreihen, die ich gerne in diesem Format ausgeben
möchte.

Also mache ich:

import csv
import numpy

# Beispieldaten:
a = numpy.random.normal(100, size0)
b = numpy.random.normal(100, size0)

file = open('random.csv', mode='w')
csv.writer(file).writerows(zip(a, b))
file.close()

was auch auf der Kommandozeile funktioniert, allerdings aus einem
Programm heraus ein Dezimalkomma anstelle eines Dezimalpunktes bastelt
und dann alle Eintràge mit '"' quotet. Eintràge der Art

"470,024","25,5174799399"
"470,277","26,068071861"

usw. sind natürlich Unsinn für ein maschinenlesbares File.

Leider bekomme ich weder heraus, was dieses Programm veràndert
(u.a. PyQt, matplotlib), noch wie ich dieses verhalten abstellen kann.

Wie bekomme ich es so hin, dass das csv-Modul immer im richtigen Format
rausschreibt?

Viele Grüße

Ole
 

Lesen sie die antworten

#1 Peter Otten
27/08/2009 - 16:33 | Warnen spam
Ole Streicher wrote:

mir ist nicht so ganz klar, wie ich den "csv-Writer" korrekt verwende.

Ich habe zwei Datenreihen, die ich gerne in diesem Format ausgeben
möchte.

Also mache ich:

import csv
import numpy

# Beispieldaten:
a = numpy.random.normal(100, size0)
b = numpy.random.normal(100, size0)

file = open('random.csv', mode='w')
csv.writer(file).writerows(zip(a, b))
file.close()

was auch auf der Kommandozeile funktioniert, allerdings aus einem
Programm heraus ein Dezimalkomma anstelle eines Dezimalpunktes bastelt
und dann alle Eintràge mit '"' quotet. Eintràge der Art

"470,024","25,5174799399"
"470,277","26,068071861"

usw. sind natürlich Unsinn für ein maschinenlesbares File.

Leider bekomme ich weder heraus, was dieses Programm veràndert
(u.a. PyQt, matplotlib), noch wie ich dieses verhalten abstellen kann.

Wie bekomme ich es so hin, dass das csv-Modul immer im richtigen Format
rausschreibt?



Schwer zu sagen ohne den Code, der das beschriebene Verhalten aufweist.
Vielleicht nimmst Du irgendwo eine Konvertierung der Zahlen mit
locale.format() vor. Ist das der Fall, sollte das Problem verschwinden, wenn
Du probeweise vor dem Programmaufruf die Sprache mit

$ LANG=C

ànderst.

Peter

Ähnliche fragen