python - 生成 CSV 和空行

标签 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/文本编辑器中看到了它

有谁知道为什么会这样?

会不会是空格?

最佳答案

是行终止符的问题吗?它可以像更改一行一样简单:

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

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

如果这不起作用,那么您用来读取文件的程序似乎期望最后一行没有行终止符,我不确定 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()]))

关于python - 生成 CSV 和空行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33002706/

相关文章:

python - 如何在 Python 中仅保留数据框中的特定行?

python - 事件 virtualenv 不工作

html - 如何使用 native powershell 命令从 html 文件中提取特定表格?

C# 用户定义的 CSV 映射到 POCO

python - 我的 Py_NoneStruct 符号(python、boost.python)在哪里?

python - 在 python 文档字符串中编写默认值的标准方法是什么?

python - 将文本字符串放入列表

python-2.7 - 指纹增强

python - Py2exe 无法编译 Pandas read_excel

r - 有没有一种有效的方法可以将现有的csv文件追加到R中而不进行重复?