从文件中读取字符串并将其转换为 Julia 数组

3

我有一个像这样的文本文件:

  5
  10
  5 3 2 7 4
  2 8 4 2 5

我需要将前两个数字分别作为整数放入不同的变量中,我已经成功地使用以下代码实现了:

arq = open("C:\\Users\\Breno Maia\\Desktop\\test.txt", "r")
n = readline(arq)
c = readline(arq)
n=parse(Int64, n)
c=parse(Int64, c)

现在,我需要将第三行和第四行放入两个不同的整数数组中。我尝试过的但不起作用的解决方案是:
line3=readline(arq)
line4 = readline(arq)

p= split(line3, "") //convert string into array
deleteat!(p, findall(x->x==" ", p)) //remove spaces

for i in p
   i=parse(Int64, i)
end

当我打印第三行时,它显示为:"SubString{String}["5", "3", "2", "7", "4"]"。请帮我看一下。谢谢。
2个回答

2
你重新绑定了i的正确值,但实际上你没有更新p中的任何引用。
你可以这样做:p = map(i -> parse(Int, i), p)

0
我建议使用readdlm来简化这样的任务。 前两个值可以在一行中获取,例如:
v1,v2=filter(x->typeof(x)<:Int, permutedims(readdlm("test.txt"))[:])

这里是获取第一个值、第二个值、第三行和第四行的完整代码:

shell> more test.txt
5
10
5 3 2 7 4
2 8 4 2 5

julia> using DelimitedFiles

julia> dat = readdlm("file.txt")
4×5 Array{Any,2}:
  5   ""   ""   ""   ""
 10   ""   ""   ""   ""
  5  3    2    7    4
  2  8    4    2    5

julia> dat[1,1], dat[2,1], Int.(dat[3,:]), Int.(dat[4,:])
(5, 10, [5, 3, 2, 7, 4], [2, 8, 4, 2, 5])

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接