h5py不能存储unicode格式的字符串,出现TypeError错误

本文探讨了使用h5py库在HDF5文件中存储Unicode字符串时遇到的问题。由于h5py不直接支持Unicode类型,尝试保存Unicode字符串会导致TypeError。解决方法是将Unicode字符串转换为UTF-8编码格式,再进行存储。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

unicode h5py
h5py不能保存unicode编码的字符串
U’XXX’格式为unicode
解决:依次将字符串转换为utf-8格式

以下链接有关于此问题的讨论:
https://github.com/h5py/h5py/issues/289

f = h5py.File("foo.h5", "w")
f.attrs['bar'] = [u'\u03b2', u'\u03b2', u'\u03b3'] # 出现错误,TypeError raised when setting list of unicodes as attribute

原因:Yes, this reflects the fact that at the moment there’s no way to store the NumPy Unicode type. Briefly, h5py turns your list into an array of type “U”, tries to store it and fails. We are discussing ways to address this. h5py不能存储Unicode类型的字符串,需要显示的将编码设置为utf8格式。

mylist = [u'\u03b2', u'\u03b2', u'\u03b3']
f.attrs['x'] = [a.encode('utf8') for a in mylist]
c:\Users\�����\Desktop\attention\main.py:312: SyntaxWarning: invalid escape sequence '\G' mat_file = "F:\Grade2\attention\2348892\subject_02.mat" ���������з�������: �޷�����MAT�ļ�: [Errno 22] Invalid argument: 'F:\\Grade2\x07ttention\x9c8892\\subject_02.mat' Traceback (most recent call last): File "C:\Users\�����\AppData\Roaming\Python\Python312\site-packages\scipy\io\matlab\_mio.py", line 39, in _open_file return open(file_like, mode), True ^^^^^^^^^^^^^^^^^^^^^ OSError: [Errno 22] Invalid argument: 'F:\\Grade2\x07ttention\x9c8892\\subject_02.mat' During handling of the above exception, another exception occurred: Traceback (most recent call last): File "c:\Users\�����\Desktop\attention\main.py", line 26, in safe_loadmat return scipy.io.loadmat(file_path) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\�����\AppData\Roaming\Python\Python312\site-packages\scipy\io\matlab\_mio.py", line 233, in loadmat with _open_file_context(file_name, appendmat) as f: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "D:\Anaconda\Lib\contextlib.py", line 137, in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ File "C:\Users\�����\AppData\Roaming\Python\Python312\site-packages\scipy\io\matlab\_mio.py", line 17, in _open_file_context f, opened = _open_file(file_like, appendmat, mode) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\�����\AppData\Roaming\Python\Python312\site-packages\scipy\io\matlab\_mio.py", line 45, in _open_file return open(file_like, mode), True ^^^^^^^^^^^^^^^^^^^^^ OSError: [Errno 22] Invalid argument: 'F:\\Grade2\x07ttention\x9c8892\\subject_02.mat' During handling of the above exception, another exception occurred: Traceback (most recent call last): File "c:\Users\�����\Desktop\attention\main.py", line 316, in <module> fig, results_df = process_alpha_eeg_data(mat_file) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "c:\Users\�����\Desktop\attention\main.py", line 35, in process_alpha_eeg_data mat_data = safe_loadmat(mat_file_path) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "c:\Users\�����\Desktop\attention\main.py", line 33, in safe_loadmat raise ValueError(f"�޷�����MAT�ļ�: {str(e)}") ValueError: �޷�����MAT�ļ�: [Errno 22] Invalid argument: 'F:\\Grade2\x07ttention\x9c8892\\subject_02.mat'分析以上报错原因
06-26
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值