Search code examples
pythonpython-3.xmultiple-columns

Counting number of columns in text file with Python


I have two text files composed of spaced-separated columns. These are excerpts of these two files:

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

As you can see FileA has 7 columns and FileB has 8. This is the code I use to count the columns:

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

This little code correctly gives the number of columns for FileA (7) but not for FileB (also gives 7) What's going on and how can I fix it?

If I'm counting rows instead of columns then: 1- how can I count the columns? and 2- given that my actual files have several thousands of lines/rows, why am I getting these results (7)?


Solution

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