gpt4 book ai didi

ocaml - 当换行符为 "/r"而不是 "/n"时,如何读取文本文件的行?

转载 作者:行者123 更新时间:2023-12-01 22:41:16 24 4
gpt4 key购买 nike

我有一个巨大的 .txt 文件,其中包含数万个形容词的列表。在文本文件中,每个单词都独占一行。我使用以下函数将其读入列表(然后使用 Array.of_list 将其放入数组中):

let read_file filename = 
let lines = ref [] in
let chan = open_in filename in
try
while true; do
lines := input_line chan :: !lines
done; []
with End_of_file ->
close_in chan;
List.rev !lines ;;

但它不起作用,因为换行符是用 /r 表示的,而不是 /n 。我最终得到一个包含一个元素的列表,基本上如下所示: ["abacinate\rabandon\rabase\rabash\rabate\rabbreviate\rabdicate"]

将换行符从 /r 更改为 /n 的最佳方法是什么?或者有没有办法读取文本文件,以便我可以告诉它在到达 /r 时在列表中创建一个新元素?

最佳答案

嗯,您当然可以在 OCaml 中使用正则表达式进行某种替换...例如,您可以将整个文件读入字符串并进行替换。但是,如果您的文本文件没有更改(我猜在这种情况下不会更改,因为它只是一大堆形容词),我将使用文本编辑器的搜索和替换功能在文本文件本身中进行替换,而不是尝试在 OCaml 程序中执行此操作。

如果您安装了 dos2unix,您可以使用它来进行翻译。你也可以使用这样的东西:

perl -pi -e 's/\r/\n/' filename

...使用这种方法意味着您更改文件一次就可以完成它,而不是总是在程序中进行替换,这将在每次运行程序时花费一些额外的时间。

关于ocaml - 当换行符为 "/r"而不是 "/n"时,如何读取文本文件的行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5783419/

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