LISP - 将带有数组表示的字符串转换为数组

时间:2015-12-08 12:17:41

标签: lisp common-lisp

我有一个文件,每行都有一个二维数组。我找不到将文件解析为实际数组的方法,并将它们放入列表中。

文件看起来像这样,数组在不同的行中,即使它似乎不是: file with matrixes

1 个答案:

答案 0 :(得分:9)

您只需使用with-open-file打开文件进行阅读,然后根据需要随时使用函数read,或者使用数组。每个read返回一个数组。使用loop,您可以收集到列表中。

基本上是这样的:

(with-open-file (s filename)
  (let ((*read-eval* nil))
    (loop with eof = '#:eof
          for object = (read s nil eof)
          until (eq object eof)
          collect object)))

另请注意,每个数组是否都在自己的行上并不重要。如果它们在一条线上,它仍然可以工作。表达式之间的换行符只是空白,用于Lisp 阅读器