分隔檔案
DelimitedFiles.readdlm
— 方法readdlm(source, delim::AbstractChar, T::Type, eol::AbstractChar; header=false, skipstart=0, skipblanks=true, use_mmap, quotes=true, dims, comments=false, comment_char='#')
從來源讀取矩陣,其中每一行(由 eol
分隔)給予一列,元素由給定的分隔符號分隔。來源可以是文字檔案、串流或位元組陣列。記憶體對應檔案可以使用傳遞對應區段的位元組陣列表示形式作為來源。
如果 T
是數字類型,結果是該類型的陣列,任何非數字元素為浮點類型或零的 NaN
。T
的其他有用值包括 String
、AbstractString
和 Any
。
如果 header
為 true
,第一行資料將作為標頭讀取,並傳回 (data_cells, header_cells)
元組,而不是只有 data_cells
。
指定 skipstart
將會忽略輸入中對應的初始行數。
如果 skipblanks
為 true
,輸入中的空白行將會被忽略。
如果 use_mmap
為 true
,由 source
指定的檔案將會被記憶體對應,以在檔案龐大的情況下潛在加速。預設為 false
。在 Windows 檔案系統上,除非檔案只讀取一次且未寫入,否則不應將 use_mmap
設定為 true
。有些臨界情況是作業系統類似 Unix,但檔案系統類似 Windows。
如果 quotes
為 true
,則允許用雙引號 (") 字元包住的欄位包含換行符號和欄位分隔符號。引號欄位中的雙引號字元必須以另一個雙引號跳脫。將 dims
指定為預期列和欄的元組(包括標頭,如果有的話)可能會加速大型檔案的讀取。如果 comments
為 true
,則會忽略以 comment_char
開頭的行和任何行中 comment_char
之後的文字。
範例
julia> using DelimitedFiles
julia> x = [1; 2; 3; 4];
julia> y = [5; 6; 7; 8];
julia> open("delim_file.txt", "w") do io
writedlm(io, [x y])
end
julia> readdlm("delim_file.txt", '\t', Int, '\n')
4×2 Matrix{Int64}:
1 5
2 6
3 7
4 8
julia> rm("delim_file.txt")
DelimitedFiles.readdlm
— 方法readdlm(source, delim::AbstractChar, eol::AbstractChar; options...)
如果所有資料都是數字,結果將會是數字陣列。如果某些元素無法解析為數字,則會傳回數字和字串的異質陣列。
DelimitedFiles.readdlm
— 方法readdlm(source, delim::AbstractChar, T::Type; options...)
行尾分隔符號視為 \n
。
範例
julia> using DelimitedFiles
julia> x = [1; 2; 3; 4];
julia> y = [1.1; 2.2; 3.3; 4.4];
julia> open("delim_file.txt", "w") do io
writedlm(io, [x y], ',')
end;
julia> readdlm("delim_file.txt", ',', Float64)
4×2 Matrix{Float64}:
1.0 1.1
2.0 2.2
3.0 3.3
4.0 4.4
julia> rm("delim_file.txt")
DelimitedFiles.readdlm
— 方法readdlm(source, delim::AbstractChar; options...)
行尾分隔符號視為 \n
。如果所有資料都是數字,結果將會是數字陣列。如果某些元素無法解析為數字,則會傳回數字和字串的異質陣列。
範例
julia> using DelimitedFiles
julia> x = [1; 2; 3; 4];
julia> y = [1.1; 2.2; 3.3; 4.4];
julia> open("delim_file.txt", "w") do io
writedlm(io, [x y], ',')
end;
julia> readdlm("delim_file.txt", ',')
4×2 Matrix{Float64}:
1.0 1.1
2.0 2.2
3.0 3.3
4.0 4.4
julia> z = ["a"; "b"; "c"; "d"];
julia> open("delim_file.txt", "w") do io
writedlm(io, [x z], ',')
end;
julia> readdlm("delim_file.txt", ',')
4×2 Matrix{Any}:
1 "a"
2 "b"
3 "c"
4 "d"
julia> rm("delim_file.txt")
DelimitedFiles.readdlm
— 方法readdlm(source, T::Type; options...)
假設欄位是以一個或多個空白分隔。行尾分隔符號視為 \n
。
範例
julia> using DelimitedFiles
julia> x = [1; 2; 3; 4];
julia> y = [5; 6; 7; 8];
julia> open("delim_file.txt", "w") do io
writedlm(io, [x y])
end;
julia> readdlm("delim_file.txt", Int64)
4×2 Matrix{Int64}:
1 5
2 6
3 7
4 8
julia> readdlm("delim_file.txt", Float64)
4×2 Matrix{Float64}:
1.0 5.0
2.0 6.0
3.0 7.0
4.0 8.0
julia> rm("delim_file.txt")
DelimitedFiles.readdlm
— 方法readdlm(source; options...)
假設欄位是以一個或多個空白分隔。行尾分隔符號視為 \n
。如果所有資料都是數字,結果將會是數字陣列。如果有些元素無法解析為數字,則會傳回數字和字串的異質陣列。
範例
julia> using DelimitedFiles
julia> x = [1; 2; 3; 4];
julia> y = ["a"; "b"; "c"; "d"];
julia> open("delim_file.txt", "w") do io
writedlm(io, [x y])
end;
julia> readdlm("delim_file.txt")
4×2 Matrix{Any}:
1 "a"
2 "b"
3 "c"
4 "d"
julia> rm("delim_file.txt")
DelimitedFiles.writedlm
— 函數writedlm(f, A, delim='\t'; opts)
使用指定的區隔符號 delim
(預設為 tab,但可以是任何可列印的 Julia 物件,通常是 Char
或 AbstractString
)將 A
(向量、矩陣或可迭代列的集合)寫入文字至 f
(檔案名稱字串或 IO
串流)。
例如,兩個長度相同的向量 x
和 y
可以透過 writedlm(f, [x y])
或 writedlm(f, zip(x, y))
寫入為 f
的兩個欄位,並以 tab 分隔。
範例
julia> using DelimitedFiles
julia> x = [1; 2; 3; 4];
julia> y = [5; 6; 7; 8];
julia> open("delim_file.txt", "w") do io
writedlm(io, [x y])
end
julia> readdlm("delim_file.txt", '\t', Int, '\n')
4×2 Matrix{Int64}:
1 5
2 6
3 7
4 8
julia> rm("delim_file.txt")