Seite 1 von 1
mehrspaltige Textdatei
Verfasst: Samstag 22. August 2009, 11:09
von reyungoo
Hallo Forum,
ich bin ein Neuling in Python und versuche gerade zwei erstellte arrays in
eine lesbare Textdatei in zwei Spalten zu zwängen.
Mit numpy.savetxt kann ich zumindest ein array speichern.
Versuche ich dann das zweite array zu speichern überschreibt er natürlich
die erste Spalte.
Auch mit write(), tofile() hatte ich keinen Erfolg.
Auch der Tipp mit pickle produziert bei mir nur Buchstabensalat.
Ihr könnt mir sicher helfen!
Verfasst: Samstag 22. August 2009, 12:51
von BlackJack
@reyungoo: Mach aus den zwei `numpy.array`\s eines.
Verfasst: Samstag 22. August 2009, 12:52
von sma
Code: Alles auswählen
# encoding: utf-8
def twocols(text, width=38):
lines = [line.ljust(width) for line in text.splitlines()]
count = len(lines) / 2
if len(lines) % 2:
lines.append(" " * width)
return u"\n".join(lines[i] + " " + lines[i + count] for i in range(count))
print twocols(u"""Hallo Forum,
ich bin ein Neuling in Python und
versuche gerade zwei erstellte
arrays in eine lesbare Textdatei in
zwei Spalten zu zwängen.
Mit numpy.savetxt kann ich zumindest
ein array speichern.
Versuche ich dann das zweite array zu
speichern überschreibt er natürlich
die erste Spalte.
Ihr könnt mir sicher helfen!
""")
Das Problem, wie man den Text auf die gewünschte Breite umbricht, überlasse ich anderen. Man kann `textwrap.wrap()` benutzen, muss dann aber noch Absätze finden. Mein kleines Beispiel bricht, wenn die Zeilen nicht alle schmaler als die angegebene Breite sind.
Stefan
Verfasst: Samstag 22. August 2009, 13:21
von BlackJack
@sma: Der OP spricht von `numpy.array`\s, ich denke mal nicht, dass es um zweispaltigen Fliesstext geht.
Verfasst: Sonntag 23. August 2009, 09:04
von sma
BlackJack hat geschrieben:@sma: Der OP spricht von `numpy.array`\s, ich denke mal nicht, dass es um zweispaltigen Fliesstext geht.
Mir doch egal ;) Den Code schnell zu schreiben hat Spaß gemacht und daher habe ich's gemacht. Zu numpy kann ich nix sagen.
Stefan
Verfasst: Dienstag 25. August 2009, 19:43
von noisefloor
Hallo,
IMHO liegt das "Problem" außerhalb von Python: eine einfache Text-Datei ist nun mal nicht dafür gemacht, mehrspaltig zu sein, weil es in diesem Format einfach nicht vorgesehen ist.
Was ist denn das Ziel? Ein Fließtext a la Zeitung oder eine Gegenüberstellung a la
car Auto
dog Hund
snake Schlange
Oder noch was anderes?
Gruß,
Verfasst: Samstag 29. August 2009, 16:10
von reyungoo
Ich habe einfach nur zwei arrays mit Werten erzeugt, die ich in eine Datei stecken wollte (zwei Spalten), um sie später dann mit Hilfe der matplotlib plotten zu können.
Mehr nicht, ich hab's bis jetzt nicht herausfinden können.
Gruß
reyungoo
Verfasst: Samstag 29. August 2009, 16:26
von problembär
ich hab's bis jetzt nicht herausfinden können.
Wieso nicht? Was ist mit dem Code von sma?
Gruß
Verfasst: Samstag 29. August 2009, 16:36
von HerrHagen
Du musst vorher, z.B. mit hstack bzw. vstack einfach ein Array draus machen und dieses dann abspeichern:
Code: Alles auswählen
>>> a = np.array([[1],[2],[3]])
>>> b = np.array([[2],[3],[4]])
>>> np.hstack((a,b))
array([[1, 2],
[2, 3],
[3, 4]])
MFG HerrHagen
Verfasst: Samstag 29. August 2009, 16:42
von HerrHagen
Da fällt mir noch ein: wieso willst du eigentlich die Daten in eine Datei speichern um sie mit matplotlib zu plotten. Das geht auch direkt:
Code: Alles auswählen
>>> a = np.array([1,2,3])
>>> b = np.array([2,3,4])
>>> pylab.plot(a, b)
Verfasst: Samstag 29. August 2009, 22:04
von CM
HerrHagen hat geschrieben:Da fällt mir noch ein: wieso willst du eigentlich die Daten in eine Datei speichern um sie mit matplotlib zu plotten.
[spekulation] Möglicherweise, um die Daten auch irgendwo hinterlegt zu haben, z. B. weil die Rechnung lange dauert und man am Plot feilen will und nicht immer wieder neu rechnen will.[/spekulation]
@reyungoo: Schau doch mal numpy.loadtxt() und numpy.savetxt() an.
noisefloor hat geschrieben:IMHO liegt das "Problem" außerhalb von Python: eine einfache Text-Datei ist nun mal nicht dafür gemacht, mehrspaltig zu sein, weil es in diesem Format einfach nicht vorgesehen ist.
@noisefloor: So? Mir kommen täglich mehrere GB mehrspaltige Textdateien (
Beispiel gefällig?) unter die Finger. Aber ansonsten bin ich mir sicher, dass hier niemand so eine Datei je gesehen hat.

SCNR
Gruß,
Christian
Verfasst: Sonntag 30. August 2009, 17:54
von reyungoo
Danke für die Antworten,
mit hstack bzw. vstack hat's dann endlich funktioniert. Das war es, was ich gesucht habe.
@CM: numpy.loadtxt() und numpy.savetxt() zum gleichzeitigen Einlesen mehrerer Spalten und Abspeichern
bestens geeignet, war aber nicht genau das, was ich brauchte, trotzdem danke.
beste Grüße