6

我有两个由空格分隔的列组成的文本文件。以下是这两个文件的摘录:

文件A

 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
 ....

文件B

 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- 我如何计算列?和 2- 鉴于我的实际文件有数千行/行,为什么我会得到这些结果 (7)?

4

3 回答 3

12
import csv

with open('filename') as f:
    reader = csv.reader(f, delimiter=' ', skipinitialspace=True)
    first_row = next(reader)
    num_cols = len(first_row)
于 2013-05-08T19:50:48.970 回答
2

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

with file("bla") as f:
  line = f.readline()
print len(line.split()), "columns"
于 2013-05-08T19:47:20.050 回答
0

只需获取第一行的长度!

import csv
file = 'my_File.csv'
reader = csv.reader(open(file,'rb'),delimiter=" ")
num_cols = len(next(read))
于 2013-05-08T19:54:51.520 回答