而迭代if语句不会求值

  • 本文关键字:语句 迭代 if python csv
  • 更新时间 :
  • 英文 :


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

descr1,费用部分1,费用部件2,descr2,费用部件1,费用零件2,

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

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)

当您迭代一个文件时,您得到的是行,而不是字符——它们的末尾有换行符n。您的if ',' == l:语句永远不会成功,因为即使您有一行中只有一个逗号,l的值也将是",n"

我建议使用csv模块:你会得到比像现在这样手工做更好的结果。

最新更新