方案 如何将列表列表写入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
作为标题,我有一个列表列表
'((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