Cod*_*nts 2 python unicode file-io
我想知道如何将unicode(utf-8)写入二进制文件。背景如下:我有一个40字节的标头(10个整数),以及一个表,表中具有可变数量的Triple-int结构。写这些简直是蛋糕。
现在,我想在文件末尾添加一串字符串。
编写基于ASCII的常规字符串很容易:
value = ('ab')
s = struct.Struct('2s')
packed_data = s.pack(value)
Run Code Online (Sandbox Code Playgroud)
我从Interpret字符串中学习了如何将其打包为二进制数据。
但是有没有办法对基于unicode(utf-8)的字符串执行此操作?
有任何想法吗?有人做过吗?
Unicode!= UTF-8。UTF-8是Unicode的二进制编码,因此就像编写ASCII字符串一样编写UTF-8字符串。也无需打包编码字符串。它已经“只是一堆字节”。
# coding: utf8
import struct
text = u'??????'
encoded_text = text.encode('utf8')
# proof packing is redundant...
format = '{0}s'.format(len(encoded_text))
packed_text = struct.pack(format,encoded_text)
print encoded_text == packed_text # result: True
Run Code Online (Sandbox Code Playgroud)
因此,只需对Unicode字符串进行编码,然后在编写打包的int后将它们附加到文件中即可。
| 归档时间: |
|
| 查看次数: |
6841 次 |
| 最近记录: |