迭代if语句不会评估

时间:2013-06-26 23:20:40

标签: python csv

这一小段代码是我尝试从CSV中的行中提取多个唯一值。 CSV在标题中看起来像这样:

descr1,费用part1,费用part2,descr2,费用part1,费用part2,

descr列在一列中有许多唯一的名称。我想采取这些独特的费用名称,并从中创建一个新的标题。为了做到这一点,我决定从获取所有不同的descr列名称开始,这样当我开始从实际行中提取数据时,我可以检查该行是否有费用金额或我需要的费用名称之一。这段代码可能有很多问题,但我是初学者。我真的只是想知道为什么我的第一个if语句永远不会在fin中的l等于逗号时触发,我知道它必须在某些时候因为它将逗号写入我的行字符串。谢谢!

row = ''
header = ''
columnames = ''
cc = ''
#fout = open(","w")
fin = open ("raw data.csv","rb")

for l in fin:
    if ',' == l:
        if 'start of cust data' not in row:
            if 'descr' in row:
                columnames = columnames + ' ' + row
                row = ''
            else:
                pass
        else:
            pass
    else:
        row = row+l
        print(columnames)

print(columnames)

1 个答案:

答案 0 :(得分:2)

当您遍历文件时,您会得到行而不是字符 - 并且最后会有换行符\n。您的if ',' == l:语句永远不会成功,因为即使您的一行只包含一个逗号,l的值也会为",\n"

我建议使用csv module:你会得到更好的结果,而不是像你一样手工做这件事。