2008-11-29 8 views
6

Ich versuche, Daten aus einer TXT-Datei in eine Schema-Struktur einzugeben. Jedes Element ist durch eine Registerkarte in der Datendatei getrennt und jeder Struktursatz befindet sich in einer neuen Zeile. Ich möchte in der Lage sein, die Daten von einer Zeile in eine Struktur einzulesen und eine Liste von jedem Struktursatz in der Datei zu machen. Irgendwelche Vorschläge?Wie würden Sie Eingabedatei in Scheme lesen?

+0

Welche Art von Strukturen? Welche Implementierung verwenden Sie? Müssen Sie nur auf R5RS bleiben, oder können Sie impl verwenden. spezifische Bibliotheken, die R6RS-Standardbibliothek, irgendwelche SRFIs? –

+0

Hört sich das wie eine Hausaufgabe für jemand anderen an? – Baxissimo

Antwort

3

Klingt wie eine CSV-Datei mit Tabs anstelle von Kommas. Wenn Sie PLT Scheme (DrScheme/mzscheme) verwenden Neils csv-Bibliothek ist wahrscheinlich, was Sie wollen.

Here is the documentation.

Hier ist, wie sie aus der Ferne laden:

(require (planet neil/csv:1:2/csv)) 

Zumindest das ist, was in der Anleitung steht. Auf meinem leicht oodate DrScheme, das ist, was funktioniert hat:

(require (planet "csv.ss" ("neil" "csv.plt" 1 (= 1)))) 
6

Nicht wirklich sicher, welche Strukturen Sie im Sinn hatte, aber sagen Sie eine Textdatei wie folgt hatte:

 
--> cat blah.txt 
foo bar baz 
1 2 3 4 5 
aa bb cc dd ee 

Man könnte es konvertieren direkt in eine Liste von Listen in Schema mit sed:

 
--> echo "(define mylist '("`sed -e 's/\(.*\)/(\1)/' blah.txt`"))" > foo.txt 

, die dann die folgende Datei erzeugt:

 
--> cat foo.txt 
(define mylist '((foo bar baz) (1 2 3 4 5) (aa bb cc dd ee))) 

Und jetzt alles, was Sie tun müssen, ist die Datei in Schema laden:

 
(load "foo.txt") 

Und Sie die Struktur über die `mylist‘ Variable zugreifen können.

+0

das ist ein cooler Trick +1 – rem7

Verwandte Themen