Python 不均匀字符行分割

Python 不均匀字符行分割,python,split,delimiter,Python,Split,Delimiter,我在构建以前使用过的一些代码时遇到问题。我有一个输入文件,每行包含6条数据。问题是,并非总是有空白用作分隔符来分割每一行,我还希望以4/4/4/8/8/4个字符的不均匀步骤分割该行,即: ' 0 0 -16-50.6123 115.393 2' 将拆分为(0,0,-16,-50.6123115.393,2)。然后我使用这些数据形成一个字典,其中键是前三个数字[0,0,-16]的数组,返回值是最后三个数字的数组[-50.6123115.393,2] 我以前使用的代码,当我的数据总是用

我在构建以前使用过的一些代码时遇到问题。我有一个输入文件,每行包含6条数据。问题是,并非总是有空白用作分隔符来分割每一行,我还希望以4/4/4/8/8/4个字符的不均匀步骤分割该行,即:

'   0   0 -16-50.6123 115.393   2'
将拆分为(0,0,-16,-50.6123115.393,2)。然后我使用这些数据形成一个字典,其中键是前三个数字[0,0,-16]的数组,返回值是最后三个数字的数组[-50.6123115.393,2]

我以前使用的代码,当我的数据总是用空格分隔时(我不能更改,因为它来自其他地方),如下所示。是否有一种很好的方法来修改我已经拥有的代码,以适应新的不均匀的行分割

谢谢

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]

如果你知道片宽,我就把线切成片。这应该给你一个想法:

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

查找分隔符或使用切片