如何使用 h5py 从 HDF5 数据集中读取字符串

Posted

技术标签:

【中文标题】如何使用 h5py 从 HDF5 数据集中读取字符串【英文标题】:How to read strings from HDF5 dataset using h5py 【发布时间】:2016-06-05 06:11:43 【问题描述】:

我有一个 HDF5 文件,h5dumps 如下(省略不相关内容)

HDF5 "file.h5" 
GROUP "/" 
  DATASET "history" 
    DATATYPE  H5T_STRING 
      STRSIZE H5T_VARIABLE;
      STRPAD H5T_STR_NULLTERM;
      CSET H5T_CSET_ASCII;
      CTYPE H5T_C_S1;
    
    DATASPACE  SIMPLE  ( 1 ) / ( H5S_UNLIMITED ) 
    DATA 
    (0): "some string"
    
  

我正在尝试使用 h5py 从 python (3.5) 中读取。到目前为止我的尝试是

import h5py
F = h5py.File('file.h5', "r")
H = list()
for x in F['history']:
    H.append(str(x))

但是

for x in H:
    print(x)

生产

b'some string'

而不是简单

some string

如何提取纯数据字符串?我需要做什么来代替str(x)

附:这是我的第一个python问题,请多多包涵。

【问题讨论】:

【参考方案1】:

随便用

H = [x.decode() for x in F['history']]

此列表推导式将 H 作为字符串列表返回。

【讨论】:

以上是关于如何使用 h5py 从 HDF5 数据集中读取字符串的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 h5py 读取只有数据集(无组)的 HDF5 文件?

如何使用 h5py 通过 szip 压缩访问 HDF5 数据集

有没有办法从 HDF5 数据集中删除行?

如何扩展 h5py 以便我可以访问 hdf5 文件中的数据?

将 hdf5 matlab 字符串加载到 Python 中

通过 h5py (HDF5) 写入具有可变长度字符串的复合数据集