如何使用show
将矩阵漂亮地打印为String?
可以使用stdout
将其打印到show(stdout, "text/plain", rand(3, 3))
。
我正在寻找类似str = show("text/plain", rand(3, 3))
答案 0 :(得分:8)
通常,DelimitedFiles
是您最好的朋友。
julia> a = rand(2,3);
julia> using DelimitedFiles
julia> writedlm(stdout, a)
0.7609054249392935 0.5417287267974711 0.9044189728674543
0.8042343804934786 0.8206460267786213 0.43575947315522123
如果要捕获输出,请使用缓冲区:
julia> b=IOBuffer();
julia> writedlm(b, a)
julia> s = String(take!(b))
"0.7609054249392935\t0.5417287267974711\t0.9044189728674543\n0.8042343804934786\t0.8206460267786213\t0.43575947315522123\n"
最后但并非最不重要的一点是,如果要控制更强大,请使用CSV
-模式相同-使用stdout
或使用缓冲区捕获输出,例如:
julia> using CSV, Tables
julia> b=IOBuffer();
julia> CSV.write(b, Tables.table(a));
julia> s = String(take!(b))
"Column1,Column2,Column3\n0.7609054249392935,0.5417287267974711,0.9044189728674543\n0.8042343804934786,0.8206460267786213,0.43575947315522123\n"
更多-如果您想捕获display
的输出-您也可以!
julia> b=IOBuffer();
julia> t = TextDisplay(b);
julia> display(t,a);
julia> s = String(take!(b))
"2×3 Array{Float64,2}:\n 0.760905 0.541729 0.904419\n 0.804234 0.820646 0.435759"