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

问题描述 投票:0回答:3

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

文件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)?

python python-3.x multiple-columns
3个回答
14
投票
import csv

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

2
投票

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

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

0
投票

只需得到第一行的长度!!

import csv
file = 'my_File.csv'
reader = csv.reader(open(file,'rb'),delimiter=" ")
num_cols = len(next(read))
© www.soinside.com 2019 - 2024. All rights reserved.