在Julia中传输数据时解析文本文件中的最后位置值时出错
我正在流式传输字符串,并将它们从.dat解析为float/int。在处理字符串中的最后一项之前,一切都进展顺利,该项返回一个错误 示例数据:在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
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
谢谢。我不知道我是多么的感谢。我不知道我是空的