ASCII wie Tabelle behandeln! Wie?

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.
Francis Begbie
User
Beiträge: 3
Registriert: Dienstag 31. Juli 2007, 13:17

ASCII wie Tabelle behandeln! Wie?

Beitragvon Francis Begbie » Dienstag 31. Juli 2007, 20:52

Hallo,

Ich habe eine ASCII, die aus bis zu 300 Zeilen und +-10 Spalten besteht.

Nun meine (Anfänger)Frage:

Wie kann ich einzelne Segmente (Zeile 9 Spalte 5) anwählen und mit denen operieren (z.B. Summe, Mittelwerte, etc.)?

Ich dachte mir erst einzeln Zeilen in Listen umwandeln und dann die einzelnen Listenelemente miteinander verstricken?! Gut/schlecht? Gibt es da was besseres?

Habe jede Menge solcher Output-Dateien, ich muss automatisieren!! ;)

Gruß,
Francis Begbie.
jo_hb
User
Beiträge: 72
Registriert: Donnerstag 26. April 2007, 09:21

Beitragvon jo_hb » Dienstag 31. Juli 2007, 22:00

Hi,
würde ich wohl auch so machen, mit den Listen... sind die Daten denn mit nem ; oder so getrennt, sodass du die einfach mit split() trennen kannst?

Ansonsten gibt es auch extra funktionen für csv-files (-> character separated values), aber ich weiss nicht ob es nicht fast einfacher (und übersichtlicher) ist das schnell selbst zu schreiben, kommt wohl auf das Format der Daten an, und was du dann damit machen willst...

Gruss,
Jo
Francis Begbie
User
Beiträge: 3
Registriert: Dienstag 31. Juli 2007, 13:17

Beitragvon Francis Begbie » Mittwoch 1. August 2007, 09:03

Hallo,

Danke jo_hb, d.h. ich bin auf den richtigen Weg. :D

Hier ist mein Skript, welches ich bisher programmiert habe:

Code: Alles auswählen

import sys, string, os

def convert_line(line):
    return [convert(item)
            for convert, item
            in zip((float, float, int), line.split(";"))]

def read_table(lines):
   
     return map(convert_line, lines)

def main():
    o = open("U:\Projekt1\Output.txt", "w")
    lines1 = o.readline()
    lines = iter(lines1)
    table = read_table(lines)
    o.close()

    print table[1][5]

main()


Über Aufklärung würde ich mich wirklich freuen.

Grüße,
Francis Begbie.
BlackJack

Beitragvon BlackJack » Mittwoch 1. August 2007, 11:16

Aufklärung worüber? Gibt es ein Problem was Du vergessen hast zu erwähnen? Falls ja könnte das daher rühren, dass Du die Datei zum schreiben öffnest, was dazu führt, dass eine eventuell vorhandene Datei als erstes einmal "geleert" wird. :-)
jo_hb
User
Beiträge: 72
Registriert: Donnerstag 26. April 2007, 09:21

Beitragvon jo_hb » Mittwoch 1. August 2007, 11:50

hallo Francis,
sieht ganz schön kompliziert aus, finde ich. Ich weiss gar nicht ob du soviele functions brauchst oder ob das dadurch nicht ein bisschen unübersichtlich wird. So:

Code: Alles auswählen

allLines = []
csvFile = open("U:\Projekt1\Output.txt", "r")
for line in csvFile:
   allLines.append(line.strip().split(";"))
print allLines


...hast du doch schon eine liste mit all deinen werten, jetzt muss man die nur noch ins richtige Zahlenformat konvertieren - kann man sicher direkt schon in der for-schleife machen, ich weiss jetzt allerdings grad auch nicht wie... :)

Warum öffnest du das file übrigens mit "w" - willst du auch reinschreiben?

Gruss,
Jo
Y0Gi
User
Beiträge: 1454
Registriert: Freitag 22. September 2006, 23:05
Wohnort: ja

Beitragvon Y0Gi » Donnerstag 2. August 2007, 09:38

Zwischenfrage: Was ist "eine ASCII"?
Francis Begbie
User
Beiträge: 3
Registriert: Dienstag 31. Juli 2007, 13:17

Beitragvon Francis Begbie » Donnerstag 2. August 2007, 12:53

Hallo,

Danke Jo und BlackJack.
Eure Beträge haben weiter geholfen.

Zusätzlich ist endlich das Python Buch da. :D

@Y0Gi: ASCII ist ne einfache Textfile in 7Bit-Zeichenkette und bei mir in einer Art Matrix mit räumlichen Bezug angelegt.

Gruß,
Francis Begbie.

Wer ist online?

Mitglieder in diesem Forum: mollyman