Common Lisp中如何将.csv文件转换为嵌套列表格式的二维列表
解决方案
首先你找到的read-2d-array函数不适用于CSV解析场景:该函数是针对空格分隔的纯整数文本设计的,逻辑完全不匹配CSV逗号分隔、支持字符串/转义字符的规则,所以会输出你看到的字符序列结果,直接弃用该段代码即可。
你已经用到的cl-csv库原生支持返回二维嵌套列表,操作步骤如下:
- 先确保加载
cl-csv库(使用Quicklisp安装加载的示例代码):
(ql:quickload :cl-csv)
- 直接调用
read-csv方法即可得到结构符合要求的二维嵌套列表:
(cl-csv:read-csv #P"filename.csv")
默认返回的列表中所有单元格值为字符串类型,如果你需要自动将数值单元格转为整数类型,可以加自定义映射参数:
(cl-csv:read-csv #P"filename.csv" :map-fn (lambda (row) (mapcar (lambda (cell) (or (parse-integer cell :junk-allowed t) cell)) row)))
运行后即可得到你期望的((column_name width length vertical_r/f stirrup) (c1 9 12 4-12dia 8-150c/c))格式输出。
内容的提问来源于stack exchange,提问作者Gayathri
相关产品推荐
相关产品推荐

