Julia中是否有一种方法可以将UUID类型转换为字符串类型?

3

我最近开始研究Julia,并尝试使用XLSL软件包将包含UUID类型的数据框(Dataframe)导出到Excel中。这会导致一个错误消息:"ERROR: Unsupported datatype UUID for writing data to Excel file."

我也尝试将UUID转换为String,结果如下:

ERROR: MethodError: no method matching String(::UUID)
Closest candidates are:
  String(::String) at boot.jl:358
  String(::Core.Compiler.LazyString) at strings/lazy.jl:46
 String(::LazyString) at strings/lazy.jl:46

有没有Julia内部支持这种方式的方法,还是我需要使用其他形式的数据处理?
1个回答

3
julia> string(uuid1())
"56b663c0-7358-11ed-116a-abcf9be287ed"

函数works运行良好,但是String(uuid1())不能正常运行(在OP中报错)。因此,您可以像上面那样将UUID转换为字符串,然后保存/使用它。

例如,在DataFrame的上下文中:

using UUIDs, DataFrames

df = DataFrame(id=[uuid1() for i=1:5])
eltype(df.id) == UUID

transform!(df, :id => ByRow(string) => :id)
eltype(df.id) == String

# now save DataFrame as usual

假设有人想要创建一个带有一些UUID的新XLSX文件:
using XLSX

XLSX.openxlsx("/tmp/new.xlsx", mode="w") do xf
    sheet = xf[1]
    someuuids = [uuid1() for i in 1:10]
    sheet[1,:] = sheet[1,:] = string.(someuuids)
end

1
谢谢,这让我找到了正确的方向。不过我不确定为什么string和String不同。 - Keith Hall
1
@KeithHall String 是一个构造函数调用,它旨在从字节缓冲区创建一个字符串。string 是由类型的 print 定义的通用转换函数;它旨在将其转换为可读表示形式。 - phipsgabler

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