如何将cx_Oracle csv输出中的默认新行分隔符修复为分号分隔符格式



这是我正在使用的脚本的摘录。它基本上是从Oracle数据库中提取数据,然后将其写入.csv文件。

除了csv写入:最后的csv不适合经典的csv格式:它是换行的,我修复了它。

但现在我无法获得简单的引号字符,即使我应该使用正确的csv.register方言代码。

以下是代码和示例:

    FILE=open(files,'wb')
    csv.register_dialect('test_dialect', delimiter=';', escapechar= '\', quotechar = ''', doublequote=False)
    output=csv.writer(FILE, 'test_dialect')

以下是我在test.csv中得到的内容:

    INSEE_COMM
    01012
    01014
    01031

以下是我想在test.csv中获得的内容:

    INSEE_COMM
    '01012'
    '01014'
    '01031'

我编辑了代码,去掉了带有"wb"参数的多余行。但我没有得到INSEE_COM值周围的引号字符

你能给我一个提示、一些关键词或一些帮助吗?

所以你想在每行上多加一个分号?只需将您的CSV方言更改为。。。

csv.register_dialect('dial_test', 
    delimiter=';', 
    lineterminator=';n', 
    quoting=csv.QUOTE_NONE, 
    escapechar='\', 
    doublequote=False)

好的,我经历了这些简单的问题,最终找到了解决方案:

第一个问题是csv中的多余行。我在那里解决了这个问题:

    FILE=open(filename,'wb')

"wb"表示"写入二进制文件":它解决了.exe、图像文件(如行尾)中单独使用"w"参数无法解决的问题。

我要求csv中的每一行都用最后一个分号:这没用。经典的以分号分隔的csv在行尾没有分号。

对于简单的引号,您只需要在方言定义中添加引号=csv.QUOTE_ALL:

    csv.register_dialect('dial_quote', delimiter=';', escapechar= '\', quotechar = ''',quoting=csv.QUOTE_ALL, doublequote=False)

QUOTE_NONE在相反方面也同样有效。

你来了!!!

最新更新