分隔文件

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 的其他有用值包括 StringAbstractStringAny

如果 headertrue,则将读取第一行数据作为标题,并返回元组 (data_cells, header_cells),而不是只返回 data_cells

指定 skipstart 将忽略输入中的相应数量的初始行。

如果 skipblankstrue,则将忽略输入中的空行。

如果 use_mmaptrue,则由 source 指定的文件将被内存映射,如果文件很大,则可以提高速度。默认值为 false。在 Windows 文件系统上,除非文件只读取一次且也未写入,否则 use_mmap 不应设置为 true。某些边缘情况存在,即操作系统类似于 Unix,但文件系统类似于 Windows。

如果 quotestrue,则允许在双引号 (") 字符中包含的列包含换行符和列分隔符。引号字段中的双引号字符必须使用另一个双引号进行转义。指定 dims 作为预期行和列 (包括标题,如果有) 的元组可以加快读取大型文件的速度。如果 commentstrue,则以 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 对象,通常是 CharAbstractString) 将 A (向量、矩阵或可迭代行的可迭代集合) 作为文本写入 f (文件名字符串或 IO 流)。

例如,可以通过 writedlm(f, [x y])writedlm(f, zip(x, y)) 将相同长度的两个向量 xy 作为两列制表符分隔的文本写入 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")
来源