方案 如何将列表列表写入CSV文件

Scheme How to write list of lists into CSV file

作为标题,我有一个列表列表

'((1 2) (3 4) (5 6))

然后我跟着 documentation 想出了这个

(define (write-to-a-file l path)
  (call-with-output-file path
    (lambda (output-port)
      (write l output-port))
    #:exists 'replace
    #:mode 'binary))

它有助于将列表写入 csv 文件。但是,csv 内容没有分开,似乎整个列表都被转储到文件中(即((1 2)(3 4)(5 6)),而不是 1 2(两个单元格)3 4(两个单元格) 等)
有没有什么方法可以在 Scheme 中将列表列表写入 csv ,例如 Python ?

您问题中的代码用于将文本写入文件,其中没有任何内容是专门用于写入 CSV 文件的。您需要解析列表内容,将每个子列表写在不同的行中,用逗号分隔元素。

但我们不需要重新发明轮子,在 Racket 中只需安装 csv-writing 包 - 如果找不到,raco 命令在 bin 安装 Racket 的文件夹:

raco pkg install csv-writing

现在我们可以使用它了:

(require csv-writing)

(define (write-to-a-file lst path)
  (call-with-output-file path
    (lambda (output-port)
      (display-table lst output-port))
    #:exists 'replace))

像这样调用你的程序:

(define lst '((1 2) (3 4) (5 6)))
(write-to-a-file lst "/path/to/file.csv")

file.csv 的内容将是:

1,2
3,4
5,6