gpt4 book ai didi

parsing - 从 J 中的平面文件读取表格数据

转载 作者:行者123 更新时间:2023-12-02 10:44:27 25 4
gpt4 key购买 nike

我有一个文件,其内容如下所示:

A  12    17.5   3.2
B 7 12 11
C 6.2 9.3 13

单元格之间的空白可以变化并且并不重要,但必须至少有一个空格。此外,第一列仅包含(或应该仅包含)这三个字母中的一个,并且我很乐意使用 0-2,而不是如果它可以简化 J 的生活(我怀疑它会)。

我什至不知道如何在 J 中解决这个问题。我想到了两种方法:

  1. 使用;:将文件内容分解为“单词”。这将为我产生这样的结果:

       (;: file)
    ┌─┬───────────┬─┬─┬───────┬─┬─┬──────────┐
    │A│12 17.5 3.2│ │B│7 12 11│ │C│6.2 9.3 13│
    └─┴───────────┴─┴─┴───────┴─┴─┴──────────┘

    这很有趣,因为它将数值分组在一起。我可以看到然后选择这些列,如下所示:

    (0=3|i.#;:file)#;:file

    我可以使用 ". 将其他行转换为数字。出于某种原因,像这样零碎地做这件事感觉很黑客。

  2. 使用顺序机 (;:)

    关于这个动词的文档让我头晕目眩,但我想如果我画一个状态转换图,我可以把单词分解。我不知道是否可以同时将任何单词转换为数字,或者是否可以通过这种方式返回矩阵。是吗?

我担心我用了太多其他语言的经验来解决这个问题,如果你知道如何做的话,这实际上是 J 中的一个简单问题。是这样吗?使用 J 执行此操作的更惯用方法是什么?

最佳答案

如果文件是一串数字,它确实会让事情变得更容易一些,所以我会将您的 A B C 替换为 1 2 3,但我还会添加一个几行显示如何进行过滤。

file 是字符串。

   [ file=.'1  12  17.5   3.2 2   7    12    11   3  6.2   9.3  13 2 2.3 3.6 12 1 3.4 2 3.4'    
1 12 17.5 3.2 2 7 12 11 3 6.2 9.3 13 2 2.3 3.6 12 1 3.4 2 3.4

使用 "将文件转换为数字。 然后一次取数字 4 以使用 _4 ]\ 创建一个表格,该表格利用了二元中缀 \ http://www.jsoftware.com/help/dictionary/d430.htm

   [ array=. _4]\ ". file
1 12 17.5 3.2
2 7 12 11
3 6.2 9.3 13
2 2.3 3.6 12
1 3.4 2 3.4

完成后,您可以根据第一列对行进行分组,并使用 v/. 执行您想要的任何操作,其中 v 是附加的任何动词到关键连词 /. http://www.jsoftware.com/help/dictionary/d421.htm

   ({."1 </. }."1) array
+------------+----------+----------+
| 12 17.5 3.2| 7 12 11|6.2 9.3 13|
|3.4 2 3.4|2.3 3.6 12| |
+------------+----------+----------+

例如,您根据第一列的类别获取每行条目的平均值。

   ({."1 (+/ % #)/. }."1) array
7.7 9.75 3.3
4.65 7.8 11.5
6.2 9.3 13

根据下面的注释,使用 ;: 技巧,您最终可以获得原始文件中您想要的形状和类型。

   ;"1 ".each(('123'{~ 'ABC'&i.) each @:{. , }.)"1[ _2 [\ ;: 'A 1.1 2.2 3.3 B 3.4 4.5 5.6 C 6.7 7.8 8.9'
1 1.1 2.2 3.3
2 3.4 4.5 5.6
3 6.7 7.8 8.9

关于parsing - 从 J 中的平面文件读取表格数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46964884/

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