如何将 .csv 文件转换为 Common-Lisp 中的列表列表
how to covert a .csv file into a list of lists in Common-Lisp
我是 common-lisp 的新手,想知道如何将 .csv 文件转换为二维列表。
我看到我们可以使用以下方法读取 .csv 文件:
(cl-csv:read-csv #P"filename.csv")
您可以通过以下方式转换为二维数组:
(defun read-2d-array (rows &rest args)
(let* ((first-line (apply #'read-line args))
(cols (1+ (count #\space first-line)))
(arr (make-array (list rows cols)
:element-type 'integer
:initial-element 0)))
(loop for i below rows
for line = first-line then (apply #'read-line args)
for start = 0
do (dotimes (j cols)
(multiple-value-bind (number end)
(parse-integer line :start start
:junk-allowed t)
(setf start end
(aref arr i j) number))))
arr))
但是在上面的输出之后我的输出看起来像这样:
#(#\c #\o #\l #\u #\m #\n #_ #\n #\a #\m #\e #, #\w # \i #\d #\t #\h #, #\l
#\e #\n #\g #\t #\h #, #\v #\e #\r #\t #\i #\c #\a #\l #_ #\r #/ #\ F #,
#\s #\t #\i #\r #\r #\u #\p #\Return #\Newline #\c #\1 #, #\9 #, #\1 #\2
#, #" #\4 #- #\1 #\2 #\d #\i #\a #, #\4 #- #\1 #\0 #\d #\i #\a #" #,
#\8 #- #\1 #\5 #\0 #\c #/ #\c #\Return #\Newline
但我希望它看起来像:
((column_name width length vertical_r/f stirrup) (c1 9 12 4-12dia 8-150c/c))
有人可以帮我解决这个问题吗?
提前谢谢你。
给定一个文件,/tmp/x.csv
包含
column_name,width,length,vertical_r/f,stirrup
c1,9,12,4-12dia,8-150c/c
然后使用 cl-csv:
> (read-csv #p"/tmp/x.csv")
(("column_name" "width" "length" "vertical_r/f" "stirrup")
("c1" "9" "12" "4-12dia" "8-150c/c"))
我是 common-lisp 的新手,想知道如何将 .csv 文件转换为二维列表。 我看到我们可以使用以下方法读取 .csv 文件:
(cl-csv:read-csv #P"filename.csv")
您可以通过以下方式转换为二维数组:
(defun read-2d-array (rows &rest args)
(let* ((first-line (apply #'read-line args))
(cols (1+ (count #\space first-line)))
(arr (make-array (list rows cols)
:element-type 'integer
:initial-element 0)))
(loop for i below rows
for line = first-line then (apply #'read-line args)
for start = 0
do (dotimes (j cols)
(multiple-value-bind (number end)
(parse-integer line :start start
:junk-allowed t)
(setf start end
(aref arr i j) number))))
arr))
但是在上面的输出之后我的输出看起来像这样:
#(#\c #\o #\l #\u #\m #\n #_ #\n #\a #\m #\e #, #\w # \i #\d #\t #\h #, #\l #\e #\n #\g #\t #\h #, #\v #\e #\r #\t #\i #\c #\a #\l #_ #\r #/ #\ F #, #\s #\t #\i #\r #\r #\u #\p #\Return #\Newline #\c #\1 #, #\9 #, #\1 #\2 #, #" #\4 #- #\1 #\2 #\d #\i #\a #, #\4 #- #\1 #\0 #\d #\i #\a #" #, #\8 #- #\1 #\5 #\0 #\c #/ #\c #\Return #\Newline
但我希望它看起来像:
((column_name width length vertical_r/f stirrup) (c1 9 12 4-12dia 8-150c/c))
有人可以帮我解决这个问题吗? 提前谢谢你。
给定一个文件,/tmp/x.csv
包含
column_name,width,length,vertical_r/f,stirrup
c1,9,12,4-12dia,8-150c/c
然后使用 cl-csv:
> (read-csv #p"/tmp/x.csv")
(("column_name" "width" "length" "vertical_r/f" "stirrup")
("c1" "9" "12" "4-12dia" "8-150c/c"))