Как я могу прочитать текстовый файл с преобразованием в Джулию? - PullRequest
1 голос
/ 10 февраля 2020

Я пытаюсь прочитать текстовый файл в julia, но не могу дать какой-либо тип, когда чтение приводит к ошибке;

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

в строке 1, столбец 1: ErrorException ("запись файла \" «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 \" не может быть преобразовано в Float64 ")

Если я не использую Float64, тип данных - Array {Any, 2}. этот результат возвращается, но у меня есть 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"

1 Ответ

2 голосов
/ 10 февраля 2020

Я рекомендую использовать библиотеку 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


...