6

スペースで区切られた列で構成される 2 つのテキスト ファイルがあります。これらは、これら 2 つのファイルの抜粋です。

ファイル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 に答える