gpt4 book ai didi

julia - 解析字符串数组

转载 作者:行者123 更新时间:2023-12-04 00:14:52 24 4
gpt4 key购买 nike

我有一个字符串的一维数组( Array{String,1} ),它描述了一个浮点矩阵(见下文)。我需要解析这个矩阵。有什么巧妙的建议吗?

  • Julia 1.5
  • MacOS

是的,我确实从一个文件中读到了这个。我不想使用 CSV 阅读整个内容,因为我想保留使用内存 I/O 读取整个文件的选项,我认为 CSV 没有。另外,我有一些复杂的行,包括字符串和数字,以及需要解析的字符串和字符串,这排除了 DelimitedFiles。这些列由两个空格分隔。

julia> lines[24+member_total:idx-1]
49-element Array{String,1}:
"0.0000000E+00 0.0000000E+00 0.0000000E+00 1.3308000E+01"
"0.0000000E+00 0.0000000E+00 1.9987500E-01 1.3308000E+01"
"0.0000000E+00 0.0000000E+00 1.1998650E+00 1.3308000E+01"
"0.0000000E+00 0.0000000E+00 2.1998550E+00 1.3308000E+01"
"0.0000000E+00 0.0000000E+00 3.1998450E+00 1.3308000E+01"
"0.0000000E+00 0.0000000E+00 4.1998350E+00 1.3308000E+01"

"0.0000000E+00 0.0000000E+00 5.9699895E+01 1.4000000E-01"
"0.0000000E+00 0.0000000E+00 6.0199890E+01 1.0100000E-01"
"0.0000000E+00 0.0000000E+00 6.0699885E+01 6.2000000E-02"
"0.0000000E+00 0.0000000E+00 6.1199880E+01 2.3000000E-02"
"0.0000000E+00 0.0000000E+00 6.1500000E+01 0.0000000E+00"

最佳答案

我强烈反对重新发明轮子和使用定制的解析器,因为此类解决方案在生产中的实际稳健性。

如果您的文件位于单个 String 中,请使用:

using DelimitedFiles
readdlm(IOBuffer(strs))

如果您的文件作为 StringVector 使用

cat(readdlm.(IOBuffer.(strsa))...,dims=1)

最后,将内存映射与 CSV 一起使用没有冲突:

using Mmap

s = open("d.txt") # d.txt contains your lines
# if you want to read & wrtie use "w+" option

m = Mmap.mmap(s, Vector{UInt8}) # memory mapping of your file

readdlm(IOBuffer(m))

同时,您始终可以将流设置为开头并读取数据而不管内存映射:

seek(s,0)
readdlm(s)
seek(s,0) # reset the stream

关于julia - 解析字符串数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64808351/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com