分隔文件
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
(默认为制表符,但可以是任何可打印的 Julia 对象,通常是 Char
或 AbstractString
) 将 A
(向量、矩阵或可迭代行的可迭代集合) 作为文本写入 f
(文件名字符串或 IO
流)。
例如,可以通过 writedlm(f, [x y])
或 writedlm(f, zip(x, y))
将相同长度的两个向量 x
和 y
作为两列制表符分隔的文本写入 f
。
示例
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")