使用Python计算文本文件中的列数

时间:2013-05-08 19:41:51

标签: python python-3.x multiple-columns

我有两个由间隔分隔的列组成的文本文件。这些是这两个文件的摘录:

FILEA

 1 1742.420   -0.410  20.1530   0.4190   1.7080   0.5940
 2 1872.060    0.070  21.4710   0.2950   0.0670   0.3380
 3 1918.150    0.150  18.9220   0.0490   1.4240   0.1150
 4 1265.760    0.170  19.0850   0.0720   1.3330   0.1450
 5  308.880    0.220  20.5020   0.1570   0.0200   0.1720
 ....

FILEB

 1 1198.367    6.465  15.684 0.015  3.119 0.140  1
 2 1451.023    6.722  17.896 0.031  0.171 0.041  1
 3 1032.364    6.788  18.895 0.074 -0.084 0.088  1
 4  984.509    7.342  19.938 0.171  0.043 0.322  1
 5 1068.536    7.369  19.182 0.091  0.486 0.143  1
 ....

正如您所看到的,FileA有7列,FileB有8列。这是我用来计算列数的代码:

import csv
file = 'filename'
reader = csv.reader(file)
num_cols = 0
for col in reader:
    num_cols = num_cols + 1

这个小代码正确地给出了FileA(7)的列数,但没有为FileB(也给出7)提供了什么,以及如何解决?

如果我计算行而不是列,那么:1-我如何计算列数?鉴于我的实际文件有几千行/行,为什么我得到这些结果(7)?

3 个答案:

答案 0 :(得分:10)

import csv

with open('filename') as f:
    reader = csv.reader(f, delimiter=' ', skipinitialspace=True)
    first_row = next(reader)
    num_cols = len(first_row)

答案 1 :(得分:2)

只读第一行,使用split查找所有非空白部分,计算:

with file("bla") as f:
  line = f.readline()
print len(line.split()), "columns"

答案 2 :(得分:0)

得到第一行的长度!!

import csv
file = 'my_File.csv'
reader = csv.reader(open(file,'rb'),delimiter=" ")
num_cols = len(next(read))