从文件中读取数据时,数组/向量的长度在Julia中是混合的

从文件中读取数据时,数组/向量的长度在Julia中是混合的,julia,Julia,我有一个文件基本上是这样的 1 2 2,3,4 5 6 3 7,8 9 10 5 11,12,13,14,15 16 4列,其中第1列和第4列是整数/浮点列,但第2列表示第3列中向量中的元素数量,因此第3列实际上是具有不同长度向量的列 如何最好地读入此内容,并在变量/dict中最好地表示此结构。 我已尝试将readdlm与delim=一起使用,我可以读取文件,但需要很容易地处理结构以获得整数/浮点数/数组以进行打印等。实际上,有更多的列和行,哪些列是可变大小的向量因情况而异,所以我不能100%

我有一个文件基本上是这样的

1 2 2,3,4 5
6 3 7,8 9
10 5 11,12,13,14,15 16
4列,其中第1列和第4列是整数/浮点列,但第2列表示第3列中向量中的元素数量,因此第3列实际上是具有不同长度向量的列

如何最好地读入此内容,并在变量/dict中最好地表示此结构。
我已尝试将readdlm与delim=一起使用,我可以读取文件,但需要很容易地处理结构以获得整数/浮点数/数组以进行打印等。实际上,有更多的列和行,哪些列是可变大小的向量因情况而异,所以我不能100%确定您到底想做什么。但如果您想将文件解析为某种数据结构,这里有一个解决方案:

function parseline(line::AbstractString)
    fields = split(line, ' ')
    v = [parse(Int, i) for i in split(fields[3], ',')]
    lenv = parse(Int, fields[2])
    lenv == length(v) || throw(DimensionMismatch("Incorrect length for $v"))
    result = Any[parse(Int, fields[1]), v, parse(Int, fields[4])]
    return result
end

function parsefile(path::AbstractString)
    return open(path) do file
        [parseline(line) for line in eachline(file)]
    end
end

第一个函数解析一行并检查第3列的长度是否与第2列中的值匹配。它返回一个向量[第1列、第3列、第4列]。第二个函数只对文件中的每一行执行此操作。

是用于分隔列还是表示浮动的?无论哪种方式,都很难理解您的示例。空格作为列分隔符,作为coulmn 3中数组元素的分隔符,这完全不清楚您在这个问题中的意思。也许你可以试着重写它来解释你需要什么?