用python猜测文本文件的缩进

时间:2013-07-09 12:31:43

标签: python readfile

我正在使用一个生成特定文件格式的程序,我必须使用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时,我只用整行来结束。

2 个答案:

答案 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

问题似乎是文件的生成方式。我很确定不是制表符分隔的文件。