0

这段代码是我尝试从 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)
4

1 回答 1

2

当你遍历一个文件时,你得到的是行,而不是字符——它们最后有换行符 , \n。你的if ',' == l:陈述永远不会成功,因为即使你有一行只有一个逗号,它的值l也会是",\n"

我建议使用csv 模块:您将获得比尝试手动执行此操作更好的结果。

于 2013-06-26T23:25:57.980 回答