2008-11-29 10 views
6

Estoy tratando de ingresar datos de un archivo .txt en una estructura de esquema. Cada elemento está separado por una pestaña en el archivo de datos y cada conjunto de estructuras está en una nueva línea. Quiero poder leer los datos de una línea en una estructura y hacer una lista de cada estructura establecida en el archivo. ¿Alguna sugerencia?¿Cómo leerías el archivo de entrada en Scheme?

+0

¿Qué tipo de estructuras? ¿Qué implementación de esquema estás usando? ¿Necesitas quedarte solo con R5RS o puedes usar impl. bibliotecas específicas, la biblioteca estándar R6RS, cualquier SRFI? –

+0

¿Le parece esto una asignación de tarea a alguien más? – Baxissimo

Respuesta

3

Suena como un archivo CSV con pestañas en lugar de comas. Si está usando PLT Scheme (DrScheme/mzscheme) , la biblioteca csv de neil es probablemente lo que usted quiere.

Here is the documentation.

Aquí es cómo cargar de forma remota:

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

Al menos, eso es lo que dicen las instrucciones. En mi ligeramente oodate DrScheme, esto es lo que ha funcionado:

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

muy seguro de qué estructuras que tenía en mente, pero decir que tenía un archivo de texto como el siguiente:

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

Usted podría convertirlo directamente en una lista de listas en el esquema usando sed:

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

que a su vez produce el siguiente archivo:

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

Y ahora todo lo que tiene que hacer es cargar el archivo en el esquema:

 
(load "foo.txt") 

Y se puede acceder a través de la estructura de la variable `milista'.

+0

eso es un truco genial +1 – rem7

Cuestiones relacionadas