我有一些软件用一些软件以固定列宽(包括空格和前导零)的方式生成的文件:
00666666.66 07777777.77 0000333.33
使用line:
data = np.loadtxt(input_xyz, delimiter = " ", skiprows = 0, unpack = True)
更新:感谢下面的答案,我意识到前导零不是numpy.loadtxt的问题 - 它会自动剥离它们。在这种情况下,我的问题是如何在值之间至少有1个或更多空间时指定delimiter()。我在没有指定分隔符的情况下发现了它的工作原理,但我有理由说明它必须指定它。
答案 0 :(得分:1)
在我的快速测试中,领先的0不会出现问题:
In [442]: np.loadtxt([b'00666666.66 07777777.77 0000333.33'])
Out[442]: array([ 6.66666660e+05, 7.77777777e+06, 3.33330000e+02])
它产生一系列花车。
此字符串使用默认split
生成
In [446]: b'00666666.66 07777777.77 0000333.33'.split()
Out[446]: [b'00666666.66', b'07777777.77', b'0000333.33']
有一个空格:
In [448]: b'00666666.66 07777777.77 0000333.33'.split(b' ')
Out[448]:
[b'00666666.66',
b'',
b'',
b'',
b'',
b'07777777.77',
b'',
b'',
b'',
b'',
b'0000333.33']
这是产生错误的空字符串之一:b''
这是否有任何机会,制表符分隔?
答案 1 :(得分:0)
您可以使用正则表达式删除前导零,但必须注意各种情况:
>>> import re
>>> input_xyz = '0012.0034 00000000 00000.12 -012.0034'
>>> re.sub(r'(?m)(^[+-]?|\s+[+-]?)(0(?=\d))+', r'\1', input_xyz)
'12.0034 0 0.12 -12.0034'