生成CSV和空白行

时间:2015-10-07 21:27:54

标签: python python-2.7 csv

我正在生成和解析CSV文件,我注意到一些奇怪的东西。

生成CSV时,最后总会有一个空行,这会在随后解析它时引起问题。

我要生成的代码如下:

with open(file, 'wb') as fp:
    a = csv.writer(fp, delimiter=",", quoting=csv.QUOTE_NONE, quotechar='')
    a.writerow(["Id", "Builing", "Age", "Gender"])

    results = get_results()

    for val in results:
        if any(val):
            a.writerow(val)

它不会通过命令行显示,但我确实在我的IDE /文本编辑器中看到它

有谁知道为什么会这样做?

这可能是空白吗?

1 个答案:

答案 0 :(得分:1)

问题是线路终结器吗?它可以像改变一行一样简单:

a = csv.writer(fp, delimiter=",", quoting=csv.QUOTE_NONE, quotechar='', lineterminator='\n')

我怀疑这是因为我知道csv.writer默认使用回车符+换行符(“\ r \ n”)作为行终止符。您用来读取文件的程序可能只需要一个换行符(“\ n”)。这在* nix和Windows之间来回切换文件时很常见。

如果这不起作用,那么用于读取文件的程序似乎期望最后一行的 no 行终止符,我不确定csv模块是否支持。为此,您可以将csv写入StringIO,“strip()”然后将其写入您的文件。

此外,由于您没有引用任何内容,是否有理由使用csv?为什么不:

with open(file, 'wb') as fp:
    fp.write("\n".join( [ ",".join([ field for field in record ]) for record in get_results()]))