2014-11-03 53 views
2

列出的清單我需要閱讀使用Common Lisp的一個文本文件。文件必須讀取到列表的列表。列表中的每個列表都必須包含來自文件的一行。讀取文件時使用的Common Lisp

現在,我已經做了這樣的代碼:

(with-open-file (in file) 
    (loop for line = (read-line in nil nil) 
     while line 
     collect (coerce line 'list))) 

但是,例如,rusult看起來爲:((#\ 0#\ 0#\ 0)(#\ 1#\ 0#\ 1))。但是我需要有沒有#\字符的結果:((0 0 0)(1 0 1))。如何解決它?

+0

該文件是什麼?正如我所看到的,你得到了你想要的東西 - 列表列表,每個列表都包含你的角色。如果你願意,你可以將字符轉換爲意圖,但現在是「列表清單」。 – coredump 2014-11-03 17:54:42

回答

2

你行已轉換爲字符的列表; 所有你需要做的是將字符轉換爲數字:

(with-open-file (in file) 
    (loop for line = (read-line in nil nil) 
    while line 
    collect (map 'list #'digit-char-p line))) 

您還可以使用(parse-integer (string c))代替digit-char-p,但似乎矯枉過正。

+1

使用'DIGIT-CHAR-P' – 2014-11-03 18:36:40

+0

@RainerJoswig:是的,謝謝 - 我知道我忘了最簡單的方式! – sds 2014-11-03 18:38:44