源于Python cookbook 记录下来,以免以后忘记了。
1. 设置fomat格式,如下:
- # 取前5个字符,跳过4个字符华,再取3个字符
- format = '5s 4x 3s'
2. 使用struck.unpack获取子字符串
- In [12]: format = '5s 4x 3s'
- In [13]: import struct
- In [14]: struct.unpack(format,"hello Python")
- Out[14]: ('hello', 'hon')
来个简单的例子吧,有一个字符串'He is not very happy',处理一下,把中间的not去掉,然后再输出。
- import struct
- theString = 'He is not very happy'
- format = '2s 1x 2s 5x 4s 1x 5s'
- print ' '.join(struct.unpack(format, theString))
2 为了处理超出baseformat字符串长度,解决方法如下:
包含其他部分
- import struct
- baseformat = '5s 3x 8s 8s'
- numremain = len(theline) - struct.calcsize(baseformat)
- format = "%s %ds" %(baseformat, numremain)
- l, s1, s2, t = struct.unpack(format, theline)
取消其他部分
- struct.unpack(baseformat, theString[:struct.calcsize(format)])
阅读(1101) | 评论(0) | 转发(0) |