使用python在hdf5文件中的变音符号

时间:2015-07-29 13:54:37

标签: python hdf5

我想使用python hdf5.py在hdf5文件中存储字符串,这完全正常工作,只要Unicode字符串中没有变音符号或其他特殊字符:

# -*- coding: utf-8 -*-

import h5py

dtype = h5py.special_dtype(vlen=unicode)
wdata = u"Ärger"

with h5py.File("test.h5", 'w') as f:
    dset = f.create_dataset("DS1", (1,), dtype=dtype)
    dset[...] = wdata


with h5py.File("test.h5") as f:
    rdata = f["DS1"].value
print rdata    

而不是Ärger,答案是''\ xc4rger'

是否可以将变音符号存储在hdf5文件中?怎么样?

2 个答案:

答案 0 :(得分:0)

您需要为适用于hdf5的数据设置一个编码(并且可能会跟踪您正在使用的编码,以便以后可以正确恢复数据)。从本质上讲,编码会将ascii-range之外的字符序列化为类似转义序列的字符 - 以后可以将其转换回终端或其他地方可读的文本。

仅仅因为你正在使用你的"" Python中的字符串并不意味着字符串以特定的方式编码,适用于这种情况。

hdf5 docs on using unicode

答案 1 :(得分:0)

感谢您的帮助,以下代码可行,问题显然是数据集是一个数组,并且没有选择正确的元素:

# -*- coding: utf-8 -*-

import h5py

dtype = h5py.special_dtype(vlen=unicode)
wdata = u"umlauts, in HDF5, for example öüßÄ might cause trouble"

print wdata



with h5py.File("test.h5", 'w') as f:
    dset = f.create_dataset("DS1", (1,), dtype=dtype)
    dset[...] = wdata


with h5py.File("test.h5") as f:
    rdata = f["DS1"].value[-1]

print rdata

问候