原文作者:Alex Martelli 中文编译:Tony (digitalsatori) 问题 如何访问一个字符串的其中一部分。比如,读入一个固定长度的记录,如何才能提取出记录中各字段的值? 解决方法 字符串'切片'的方法不错,但是每次只能提取一个字段: afield = theline[3:8] 如果还要考虑每个字段的长度,那 struct.unpack 再合适不过了。比如: import struct # 获取5个字节长度的字符串,跳过3个字节,获取2个长度为8个字节的字符串,获取剩余的全部字符 baseformat = "5s 3x 8s 8s" # 从baseformat中可以知道字符串theline的最短的长度(本例中为24,我们可以使用 # struct.calcsize 计算来获得) numremain = len(theline) - struct.calcsize(baseformat) # 创建带's'的格式化子串,然后使用unpack format = "%s %ds" % (baseformat, numremain) l, s1, s2, t = struct.unpack(format, theline) 如果你想要跳过(而不是如上获取)剩余的字符,你可以: l, s1, s2 = [...]
Displaying posts tagged with













