2013-06-26 32 views
0

这段代码的小代码是我试图从CSV中的行中拉出多个唯一值。在CSV看起来在标题是这样的:while iteing if if statement will not evaluate

descr1,费第一部分,第2部分费用,descr2,费第一部分,第2部分费用,

与一列有许多独特的名字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) 

回答

2

当你遍历一个文件,你的线条,没有字符 - 和他们有换行符,\n,在最后。您的if ',' == l:声明永远不会成功,因为即使您的行中只有一个逗号,l的值将为",\n"

我建议使用csv module:你会得到好得多的结果,而不是像你在做手工那样做。

+0

我不知道CSV模块存在,我会使用它。感谢您澄清我对迭代发生的误解。 –