На самом деле CSV.jl должен вести себя по умолчанию, считывая данные и удаляя лишние столбцы.Вот пример:
julia> using CSV, DataFrames
julia> println(read("x.txt", String))
a,b,c
1,2,3
4,5,6,7,8
1,2
1,2,3
julia> df = CSV.read("x.txt")
4×3 DataFrame
│ Row │ a │ b │ c │
│ │ Int64⍰ │ Int64⍰ │ Int64⍰ │
├─────┼────────┼────────┼─────────┤
│ 1 │ 1 │ 2 │ 3 │
│ 2 │ 4 │ 5 │ 6 │
│ 3 │ 1 │ 2 │ missing │
│ 4 │ 1 │ 2 │ 3 │
Короче говоря: слишком длинные строки не пропускаются, а усекаются.И слишком короткие строки (как вы можете видеть в примере) заполнены missing
.Но во всех случаях вы должны получить объект DataFrame
.
Конечно, CSV.validate
в случае ошибки в первой недопустимой строке:
julia> CSV.validate("x.txt")
ERROR: CSV.TooManyColumnsError("row=2, col=3: expected 3 columns then a newline or EOF; parsed row: '4, 5, 6'")