Python逐列读取CSV文件

时间:2016-11-23 23:03:30

标签: python csv

我正在尝试使用python程序操作csv数据文件。

csv文件看起来像这样,长度不同:

1,B,T,P,B,B,B,P,P,P,T,P,P,P,P,T,B,P,P,B,P,P,B,B,P,P
2,T,P,B,P,B,B,P,P,B,B,T,P,B,B,T,P,P,B,B,B,B,P,T,B,T,B,B,B,P
3,P,P,B,B,P,B,T,T,B,P,P,B,B,B,P,B,B,P,P,B,P,T,P,B,P,P,P
4,B,B,P,P,P,B,P,B,T,B,P,P,B,B,P,P,B,B,B,T,B,P,B,B,B,P,P,B

所以在第1行我想评估:

  

B vs T

然后

  

T vs P

然后

  

P vs B

直到结束

  

B vs P

然后从下一行开始,直到文件结束。

我正在使用:

readCSV = csv.reader(csvfile, delimiter=',')

for row in readCSV:
    for col in row:

我尝试了row[1] vs row[2],但不确定如何为不同长度的行增加这些内容。

寻找最简单的评估方法的建议,以便我完成每一行?基本上我只测试新列[2]是否等于前一列[1],整个行。

1 个答案:

答案 0 :(得分:0)

线条长度不同,所以我不会使用csv阅读器。我建议逐行读取文件,用逗号分隔行,并分别比较每个位置:

import itertools

with open("data.csv", "r") as datafile:

    line1 = datafile.readline()

    for line2 in datafile:

        tokens1 = line1.strip().split(',')
        tokens2 = line2.strip().split(',')

        print(" --- Comparing lines %s <=> %s --- " % (tokens1[0], tokens2[0]))

        for (a, b) in itertools.zip_longest(tokens1[1:], tokens2[1:]):
            print("%s <=> %s : %s" % (a, b, "Equal" if a==b else "Not equal"))

        line1 = line2

python 3.4的输出是:

 --- Comparing lines 1 <=> 2 ---
B <=> T : Not equal
T <=> P : Not equal
P <=> B : Not equal
B <=> P : Not equal
B <=> B : Equal
B <=> B : Equal
P <=> P : Equal
P <=> P : Equal
P <=> B : Not equal
T <=> B : Not equal
P <=> T : Not equal
P <=> P : Equal
P <=> B : Not equal
P <=> B : Not equal
T <=> T : Equal
B <=> P : Not equal
P <=> P : Equal
P <=> B : Not equal
B <=> B : Equal
P <=> B : Not equal
P <=> B : Not equal
B <=> P : Not equal
B <=> T : Not equal
P <=> B : Not equal
P <=> T : Not equal
None <=> B : Not equal
None <=> B : Not equal
None <=> B : Not equal
None <=> P : Not equal
 --- Comparing lines 2 <=> 3 ---
T <=> P : Not equal
P <=> P : Equal
B <=> B : Equal
P <=> B : Not equal
B <=> P : Not equal
B <=> B : Equal
P <=> T : Not equal
P <=> T : Not equal
B <=> B : Equal
B <=> P : Not equal
...