我在构建我之前使用过的一些代码时遇到了问题。我有一个输入文件,每行包含6个数据。问题是,并不总是用空格作为分隔符来分割每一行,我还想以4/4/4/8/8/4字符的不均匀步骤分割行,即:
' 0 0 -16-50.6123 115.393 2'
将分为(0,0,-16,-50.6123,115.393,2)。然后我使用这些数据形成一个字典,其中键是前三个数字[0,0,-16]的数组,返回值是最后三个数字的数组[-50.6123,115.393,2]。 / p>
我之前使用的代码,当我的数据总是被空格分隔时(由于它来自其他地方,我无法改变)如下所示。有没有一种很好的方法来修改我已经拥有的代码以适应新的不均匀分割线。
谢谢!
def formatter(lines):
for line in lines:
if not line.strip(): continue
yield [to_float(item) for item in line.split()]
dct1 = {}
with open('test.txt') as f1:
for row in formatter(f1):
dct1[tuple(row[:3])] = row[3:6]
答案 0 :(得分:0)
如果您知道切片宽度,我只需将切割线切割成切片即可。这应该给你一个想法:
my_string =' 0 0 -16-50.6123 115.393 2'
widths=[4,4,4,8,8,4]
my_start=0
my_end=0
for w in widths:
my_end+=w
print my_string[my_start:my_end] #or do whatever you want
my_start+=w
输出:
0
0
-16
-50.6123
115.393
2