在Julia中传输数据时解析文本文件中的最后位置值时出错

在Julia中传输数据时解析文本文件中的最后位置值时出错,julia,Julia,我正在流式传输字符串,并将它们从.dat解析为float/int。在处理字符串中的最后一项之前,一切都进展顺利,该项返回一个错误 示例数据: x = "15505052|B|Other|2.22|250022|2776|09/2019|01/2004|" y = split(x, "|") # <-- one inner loop of the loop if isblank(y[9]) == false floater = parse(Float64, y[9]) end

我正在流式传输字符串,并将它们从.dat解析为float/int。在处理字符串中的最后一项之前,一切都进展顺利,该项返回一个错误

示例数据:

x = "15505052|B|Other|2.22|250022|2776|09/2019|01/2004|"

y = split(x, "|")  # <-- one inner loop of the loop

if isblank(y[9]) == false
   floater = parse(Float64, y[9])
end
我已经直观地检查了上述数据字符串中的最后一列,并确定数据应该可以解析为Float64,实际上其他每一列都可以正常工作

我发现我可以单独解析.dat中的行(出于测试目的),但是当我移动到流文件时,Julia会抛出错误。关于这个错误,我能弄明白的唯一一件事是,它必须与处理字符串y[9]中的最终记录有关,这对我来说毫无意义


非常感谢您对这个令人沮丧的问题的任何帮助

您使用的是哪个julia版本?我的不把
parse(fmt,str)
识别为有效的命令(v0.3.10)

尝试真正解析数字,而不仅仅是转换它们。这样可以正确地执行分区(如第二个
x
中的01/2004)

这在my julia REPL中运行良好,返回
12.0
12.1
4.0

请注意,我正在“执行”这些数字,如果我将此代码用于快速脚本以外的其他用途,则会引发安全问题。

您使用的是哪个julia版本?我的不把
parse(fmt,str)
识别为有效的命令(v0.3.10)

尝试真正解析数字,而不仅仅是转换它们。这样可以正确地执行分区(如第二个
x
中的01/2004)

这在my julia REPL中运行良好,返回
12.0
12.1
4.0

请注意,我正在“执行”这些数字,如果我将此代码用于快速脚本以外的其他用途,则会引发安全问题。

您正在测试
y
是否为空,而实际上它是一个空字符串:

x = "15505052|B|Other|2.22|250022|2776|09/2019|01/2004|"
y = split(x)
y[9]           # ""
isblank(y[9])  # false, since we have an empty string
float(y[9])    # ERROR: ArgumentError("float64(String): invalid number format")
您应该修改代码以使用
isempty()

using Compat # for parse(Float, String)

if !isempty(y[9])
    floater = parse(Float64, y[9])
end
# do stuff

您正在测试
y
是否为空,而实际上它是一个空字符串:

x = "15505052|B|Other|2.22|250022|2776|09/2019|01/2004|"
y = split(x)
y[9]           # ""
isblank(y[9])  # false, since we have an empty string
float(y[9])    # ERROR: ArgumentError("float64(String): invalid number format")
您应该修改代码以使用
isempty()

using Compat # for parse(Float, String)

if !isempty(y[9])
    floater = parse(Float64, y[9])
end
# do stuff

谢谢。我不知道我是多么的感谢。我不知道我是空的