我正在使用一个生成特定文件格式的程序,我必须使用python脚本进行读取和修改。该文件应该是制表符分隔符,但我无法识别制表符。有没有什么好方法可以读取这种文件,并以相同的格式生成一个新文件?
1. Base Year Data for Calibration
1.1 Observed Data per Internal Zone
Sector Zone ExogProd InducedPro ExogDemand Price ValueAdded Attractor
1 1 5000 0 0 14409.8204 0 1
1 2 800 0 0 12628.4625 0 1
1 3 1100 0 0 12676.3341 0 1
2 1 0 3393.2241 0 13944.0613 0 1
2 2 0 732.1119 0 12340.4575 0 1
2 3 0 974.6630 0 12132.7666 0 1
3 1 0 4491.8722 0 2701.8266 0 1
3 2 0 12755.9657 0 2445.0556 0 1
3 3 0 4752.1604 0 2671.2305 0 1
4 1 0 1790.7874 0 3858.0189 0 1
4 2 0 3076.6366 0 3337.8784 0 1
4 3 0 11132.5806 0 3728.1412 0 1
5 1 0 69.5126 0 250000 250000 1
5 2 0 109.5081 0 120000 120000 1
5 3 0 124.2133 0 180000 180000 1
问题在于,当我用line.split('\ t')读取python时,我只用整行来结束。
答案 0 :(得分:2)
正如其他人在评论中指出的那样,这似乎只是一个空格分隔的文件,在单元格之间有可变数量的空格。如果是这种情况,您可以从特定行中提取单元格,如下所示:
cells = line.split()
至于重新生成它,你需要将不同的列填充到不同的宽度。一种方法是使用这样的代码:
widths = [12,9,11,11,11,11,11,11]
paddedCells = [string.rjust(cell,widths[i]) for i,cell in enumerate(cells)]
line = ''.join(paddedCells)
答案 1 :(得分:0)
实际上我正在使用
%12d %8d %10.2f %10.2f %10.2f %10.2f %10.2f %10.1f\n
问题似乎是文件的生成方式。我很确定不是制表符分隔的文件。