一些 CSV 单元格包含在“引号”中,而另一些则没有

Posted

技术标签:

【中文标题】一些 CSV 单元格包含在“引号”中,而另一些则没有【英文标题】:Some CSV cells are wrapped in "quotes" while others are not 【发布时间】:2021-03-30 22:31:13 【问题描述】:

我是 Python 的新手。我无法调试代码。有人可以指导如何调试吗?

with open(inputFile, mode='rt') as f:
    reader = csv.reader(f, delimiter=',',  quotechar='"')
    header = next(reader,None)
    rows = sorted(reader, key=operator.itemgetter(1))
with open(outputFile, 'w') as final:    
    writer = csv.writer(final, delimiter=',')
    writer.writerow(header)
    for eachRow in rows:        
        writer.writerow(eachRow)

在某些情况下输出是

"","xxx"

在其他情况下,我明白了

,xxx,

我尝试异常块时遇到了一些缩进问题

【问题讨论】:

“我尝试异常块时遇到了一些缩进问题” 看起来像英文单词,但实际上没有意义。你能试着重新表达你在这里想说的话吗? 顺便说一句,Python 中局部变量的推荐命名约定是snake_case 而不是dromedaryCase;即input_fileoutput_fileeach_row(或者在这些情况下,如果你的眼睛很痛,可能只是去掉下划线)。 【参考方案1】:

当您实例化 csv.writer 时,您可以告诉它您想要什么引用行为。传入quoting=csv.QUOTE_ALL 告诉它仔细引用所有内容。

    writer = csv.writer(final, delimiter=',', quoting=csv.QUOTE_ALL)

但是,这通常不是必需的;任何合理的 CSV 实现都将允许并期望大多数字段不被引用。唯一真正需要引用的字段是包含文字双引号或逗号的字段(或更一般地说,列分隔符或引号字符的文字实例;有常见的 CSV 方言,如 TSV 等,它们使用不同的分隔符) .

【讨论】:

以上是关于一些 CSV 单元格包含在“引号”中,而另一些则没有的主要内容,如果未能解决你的问题,请参考以下文章

导出csv格式,一个单元格内容包含“逗号”,“双引号”问题

WPSExcelLibreOffice里的CSV

请教高手:csv文件用excel打开另存后,如何把单元格格式中的“”双引号去掉,直接转换为文本格式

对于使用apache POI转换为CSV时的xlsx单元格数据

在引用的 csv 中匹配未转义的引号

使用 Linux 工具将多行 csv 转换为单行