0

我在构建之前使用的一些代码时遇到问题。我有一个输入文件,每行包含 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] 的数组。

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

谢谢!

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]
4

1 回答 1

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
于 2013-02-21T16:19:01.617 回答