我希望使用pythonhdf5.py将字符串存储在hdf5文件中,只要在Unicode字符串中没有umlauts或其他特殊字符,它就能很好地工作:
# -*- 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,而是u'\xc4rger‘
是否可以在hdf5文件中存储umlauts?多么?
发布于 2015-07-29 14:06:32
您需要为您的数据设置一个用于hdf5的编码(并可能跟踪您正在使用的编码,以便以后能够正确地恢复数据)。从本质上说,编码会将超出ascii范围的字符序列化成类似转义序列的内容,这些序列稍后可以转换为在终端或其他地方可读的文本。
在Python中使用u"“字符串并不意味着字符串是以一种特殊的方式编码的,而这种方式适用于这种情况。
关于使用unicode的hdf5文档
发布于 2015-07-31 14:26:42
谢谢您的帮助,下面的代码可以工作,问题显然是数据集是一个Array,并且没有选择正确的元素:
# -*- 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问候
https://stackoverflow.com/questions/31702543
复制相似问题