gpt4 book ai didi

emacs - elisp:将文件读入列表列表

转载 作者:行者123 更新时间:2023-12-02 08:30:01 24 4
gpt4 key购买 nike

我需要将文件内容读入二维列表,用换行符和空格分隔。例如,

a b
c d

需要成为

(list (list "a" "b") (list "c" "d"))

目前我只知道如何将内容读取到由换行符确定的简单列表中。每当我需要使用该列表中的一个元素时,我每次都必须用空格将其拆分,但最好只预先完成一次。

最佳答案

虽然 abo-abo 上面的回答很好,但它创建了一个包含文件全部内容的临时字符串,效率很低。如果文件很大,最好逐行遍历缓冲区收集数据:

(defun file-to-matrix (filename)
(with-temp-buffer
(insert-file-contents filename)
(let ((list '()))
(while (not (eobp))
(let ((beg (point)))
(move-end-of-line nil)
(push (split-string (buffer-substring beg (point)) " ") list)
(forward-char)))
(nreverse list))))

注意 with-temp-buffer 的使用,它避免了留下缓冲区,以及 insert-file-contents 的使用,它避免了干扰任何可能正在访问同一文件的其他缓冲区。

关于emacs - elisp:将文件读入列表列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28043763/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com