gpt4 book ai didi

text - 在 clojure 中读取文件并忽略第一行?

转载 作者:行者123 更新时间:2023-12-01 10:51:33 25 4
gpt4 key购买 nike

使用 this answer 中的代码, 我有

(defn repeat-image [n string]
(println (apply str (repeat n string))))

(defn tile-image-across [x filename]
(with-open [rdr (reader filename)]
(doseq [line (line-seq rdr)]
(repeat-image x line))))

...水平平铺 ascii 图像。现在,我怎么能“忽略”第一行呢?我这样做的原因是每个图像的第一行都有坐标(例如“20 63”),而我不需要该行。我尝试了一些方法(保留索引、模式匹配),但我的方法感觉做作。

最佳答案

假设您想像在 tile-image-across 中那样跳过文件的第一行并处理剩余的行,您可以简单地替换 (line-seq rdr )

(next (line-seq rdr))

事实上,您可能应该考虑选择相关行和处理:

;; rename repeat-image to repeat-line

(defn read-image [rdr]
(next (line-seq rdr)))

(defn repeat-image! [n lines]
(doseq [line lines]
(repeat-line n line)))

with-open 中使用:

(with-open [rdr ...]
(repeat-image! (read-image rdr)))

如果您的文件包含多个图像并且您需要跳过每个图像的第一行,那么最好的方法是编写一个函数来将行的序列划分为图像的序列(如何完成取决于文件的格式),然后将其映射到 (line-seq rdr)(map next ...)) 到结果:

(->> (line-seq rdr)
;; should partition the above into a seq of seqs of lines, each
;; describing a single image:
(partition-into-individual-image-descriptions)
(map next))

注意。使用惰性 partition-into-individual-image-descriptions 这将产生惰性序列的惰性序列;您需要在 with-open 关闭阅读器之前使用它们。

关于text - 在 clojure 中读取文件并忽略第一行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19013616/

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