【问题标题】:Read a string from file and convert into array Julia从文件中读取字符串并转换为数组 Julia
【发布时间】:2020-01-06 18:26:15
【问题描述】:

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

  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

当我打印 line3 时,它显示:"SubString{String}["5", "3", "2", "7", "4"]" 请帮忙。谢谢

【问题讨论】:

    标签: arrays file type-conversion julia


    【解决方案1】:

    您正在将i 重新绑定到正确的值,但实际上并未更新p 中的任何引用。

    你可以这样做:p = map(i -> parse(Int, i), p)

    【讨论】:

      【解决方案2】:

      我建议使用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])
      

      【讨论】:

        猜你喜欢
        • 2012-06-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多