如何在 Julia 中通过转换读取文本文件?

How can I read text file with converting in Julia?

我尝试在 julia 中读取一个文本文件,但在读取时我无法给出任何类型,它会出错;

data = readdlm("data.txt",'\t', Float64)

at row 1, column 1 : ErrorException("file entry \" 0.00632 18.00 2.310 0 0.5380 6.5750 65.20 4.0900 1 296.0 15.30 396.90 4.98 24.00\" cannot be converted to Float64")

如果我不使用Float64,数据类型是Array{Any,2}。 这个结果 returns 但我在数据中有 14 个不同的列。

 " 0.27957   0.00   9.690  0  0.5850  5.9260  42.60  2.3817   6  391.0  19.20 396.90  13.59  24.50"
 " 0.17899   0.00   9.690  0  0.5850  5.6700  28.80  2.7986   6  391.0  19.20 393.29  17.60  23.10"
 " 0.28960   0.00   9.690  0  0.5850  5.3900  72.90  2.7986   6  391.0  19.20 396.90  21.14  19.70"
 " 0.26838   0.00   9.690  0  0.5850  5.7940  70.60  2.8927   6  391.0  19.20 396.90  14.10  18.30"
 " 0.23912   0.00   9.690  0  0.5850  6.0190  65.30  2.4091   6  391.0  19.20 396.90  12.92  21.20"

我建议使用 CSV 库来解析分隔文件。它具有处理重复分隔符等功能,这些功能可能会处理您的输入文件。

julia> using Pkg

julia> Pkg.add("CSV")

julia> import CSV

julia> Array(CSV.read("data.txt"; delim=' ', ignorerepeated=true, type=Float64))
4×14 Array{Float64,2}:
 0.17899  0.0  9.69  0.0  0.585  5.67   28.8  2.7986  6.0  391.0  19.2  393.29  17.6   23.1
 0.2896   0.0  9.69  0.0  0.585  5.39   72.9  2.7986  6.0  391.0  19.2  396.9   21.14  19.7
 0.26838  0.0  9.69  0.0  0.585  5.794  70.6  2.8927  6.0  391.0  19.2  396.9   14.1   18.3
 0.23912  0.0  9.69  0.0  0.585  6.019  65.3  2.4091  6.0  391.0  19.2  396.9   12.92  21.2