Схема Как записать список списков в файл CSV - PullRequest
2 голосов
/ 04 апреля 2020

как заголовок, у меня есть список списков

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

И я следую документации , чтобы придумать это

(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 (две ячейки ) et c)
Есть ли какой-нибудь подход, который может написать список списков в csv на схеме, например Python?

1 Ответ

2 голосов
/ 04 апреля 2020

Код в вашем вопросе предназначен для записи текста в файл, в нем ничего не указано c для записи файла CSV. Вам нужно будет проанализировать содержимое списка, записав каждый подсписок в отдельной строке, разделив элементы запятыми.

Но нам не нужно изобретать колесо, в Racket просто установите * Пакет 1004 * - если вы не можете его найти, команда raco находится в папке bin, в которую вы установили ракетку:

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
...