Seite 1 von 1

ASCII wie Tabelle behandeln! Wie?

Verfasst: Dienstag 31. Juli 2007, 20:52
von Francis Begbie
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.

Verfasst: Dienstag 31. Juli 2007, 22:00
von jo_hb
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

Verfasst: Mittwoch 1. August 2007, 09:03
von Francis Begbie
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.

Verfasst: Mittwoch 1. August 2007, 11:16
von BlackJack
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. :-)

Verfasst: Mittwoch 1. August 2007, 11:50
von jo_hb
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

Verfasst: Donnerstag 2. August 2007, 09:38
von Y0Gi
Zwischenfrage: Was ist "eine ASCII"?

Verfasst: Donnerstag 2. August 2007, 12:53
von Francis Begbie
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.