如何使用 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 数据集中读取字符串的主要内容,如果未能解决你的问题,请参考以下文章

是否可以从 Python 的 HDF5 文件中的复合数据集中读取字段名称?

如果我将偏移量设置为非零,则在使用 hyperslab 从 HDF5 文件中读取数据时出现异常

如何读取 hdf5 文件。并将它们绘制为图像

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

为啥我的 hdf5 文件看起来如此不必要地大?

HDF5 简单读取数据集失败