【发布时间】:2015-02-18 21:35:44
【问题描述】:
我想将字符串列表写入二进制文件。假设我有一个字符串列表mylist?假设列表的项目最后有一个'\t',除了最后一个有一个'\n'(帮助我,恢复数据)。示例:['test\t', 'test1\t', 'test2\t', 'testl\n']
对于一个 numpy ndarray,我发现以下脚本有效(从这里得到它numpy to r converter):
binfile = open('myfile.bin','wb')
for i in range(mynpdata.shape[1]):
binfile.write(struct.pack('%id' % mynpdata.shape[0], *mynpdata[:,i]))
binfile.close()
如果变量前面有
*(例如上面的*mynpdata[:,i]示例),binfile.write是否会自动解析所有数据?这是否可以以相同的方式处理整数列表(例如*myIntList)?如何对字符串列表执行相同操作?
我在单个字符串上使用(我在网上某处找到)尝试了它:
oneString = 'test'
oneStringByte = bytes(oneString,'utf-8')
struct.pack('I%ds' % (len(oneString),), len(oneString), oneString)
但我不明白为什么上面的'I%ds' 中的% 被(len(oneString),) 取代,而不是len(oneString),就像ndarray 示例一样,以及为什么len(oneString) 和oneString 都通过了?
有人可以帮我写一个字符串列表吗(如有必要,假设它被写入我写出ndarray的同一个二进制文件)?
【问题讨论】:
标签: string python-3.x numpy