Python 不均匀字符行分割
我在构建以前使用过的一些代码时遇到问题。我有一个输入文件,每行包含6条数据。问题是,并非总是有空白用作分隔符来分割每一行,我还希望以4/4/4/8/8/4个字符的不均匀步骤分割该行,即: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] 我以前使用的代码,当我的数据总是用
' 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
查找分隔符或使用切片