2008-11-29 6 views
6

J'essaie d'entrer des données d'un fichier .txt dans une structure de schéma. Chaque élément est séparé par un onglet dans le fichier de données et chaque jeu de structure est sur une nouvelle ligne. Je veux être capable de lire dans les données d'une ligne dans une structure et faire une liste de chaque ensemble de structure dans le fichier. Aucune suggestion?Comment liriez-vous le fichier d'entrée dans Scheme?

+0

Quel type de structures? Quelle implémentation de schéma utilisez-vous? Avez-vous besoin de s'en tenir à R5RS, ou pouvez-vous utiliser impl. bibliothèques spécifiques, la bibliothèque standard R6RS, les SRFI? –

+0

Est-ce que cela ressemble à un devoir à quelqu'un d'autre? – Baxissimo

Répondre

3

Semble un fichier CSV avec des tabulations au lieu de virgules. Si vous utilisez PLT Scheme (DrScheme/mzscheme) la bibliothèque csv de neil est probablement ce que vous voulez.

Here is the documentation.

Voici comment le charger à distance:

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

Au moins, c'est ce que disent les instructions. Sur mon peu Oodate DrScheme, voici ce qui a fonctionné:

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

Pas vraiment sûr de ce que les structures que vous aviez à l'esprit, mais vous dites aviez un fichier texte comme suit:

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

Vous pouvez convertir directement dans une liste de listes dans le schéma en utilisant sed:

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

qui produit alors le fichier suivant:

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

Et maintenant, tout ce que vous devez faire est de charger le fichier dans système:

 
(load "foo.txt") 

Et vous pouvez accéder à la structure via la variable `MyList ».

+0

c'est un truc cool +1 – rem7

Questions connexes