mehrspaltige Textdatei

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
reyungoo
User
Beiträge: 9
Registriert: Samstag 22. August 2009, 10:13

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!
BlackJack

@reyungoo: Mach aus den zwei `numpy.array`\s eines.
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

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
BlackJack

@sma: Der OP spricht von `numpy.array`\s, ich denke mal nicht, dass es um zweispaltigen Fliesstext geht.
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

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
Benutzeravatar
noisefloor
User
Beiträge: 3856
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

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ß,
reyungoo
User
Beiträge: 9
Registriert: Samstag 22. August 2009, 10:13

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
problembär

ich hab's bis jetzt nicht herausfinden können.
Wieso nicht? Was ist mit dem Code von sma?

Gruß
Benutzeravatar
HerrHagen
User
Beiträge: 430
Registriert: Freitag 6. Juni 2008, 19:07

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
Benutzeravatar
HerrHagen
User
Beiträge: 430
Registriert: Freitag 6. Juni 2008, 19:07

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)
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

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. :wink: SCNR

Gruß,
Christian
reyungoo
User
Beiträge: 9
Registriert: Samstag 22. August 2009, 10:13

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
Antworten