1
這是我想讀入朱莉婭在我的文件中的行:朱莉婭解析浮動從文件:類型愁楚
O1 O 0.00351(19) 0.66716(19) -0.36485(16)
我想替換括號和閱讀這些爲浮動。我認爲這應該可行,但事實並非如此。
lines = readlines(open("myfile"))
line = lines[1]
frac_coords = split(line)[3:end]
i = 1
frac_coords[i] = replace(frac_coords[i], "(", "")
frac_coords[i] = replace(frac_coords[i], ")", "")
frac_coords[i] = parse(Float64, frac_coords[i])
我得到的錯誤:
LoadError: MethodError: `convert` has no method matching convert(::Type{SubString{ASCIIString}}, ::Float64)
This may have arisen from a call to the constructor SubString{ASCIIString}(...),
since type constructors fall back to convert methods.
Closest candidates are:
call{T}(::Type{T}, ::Any)
convert{T<:AbstractString}(::Type{SubString{T<:AbstractString}}, !Matched::T<:AbstractString)
convert{T<:AbstractString,S<:Union{Char,Int32,UInt32}}(::Type{T<:AbstractString}, !Matched::AbstractArray{S<:Union{Char,Int32,UInt32},1})
...
while loading In[53], in expression starting on line 14
in setindex! at array.jl:313
,我已經嘗試過做轉換到AbstractStrings。並在convert(Array{ASCIIString}, split(line)[3:end])
開頭。
這不應該更容易嗎?
感謝。我仍然不認爲這是直觀的。 'x = 1.0'然後'x = 1'從Float64轉換爲Int。我想這會涉及到數組中的混合類型。儘管如此,它可能會變成一個數組{T},其中T是兩種類型的聯合吧? – Cokes
@Cokes,肯定是的,存在許多可能的解決方案,例如。正如你已經提到過的,可以使用一個更普通的容器,比如'Union'的矢量或者'Any'類型的矢量。 –