繁体   English   中英

如何将cx_Oracle csv输出中的默认换行符固定为分号分隔符格式?

[英]How to fix a default new line delimiter in a cx_Oracle csv output into a semicolon delimiter format?

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

除csv编写外,其他所有程序都运行良好:最终的csv与经典的csv格式不符:这是用新行分隔的,我已将其修复。

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

下面是代码和示例:

    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在行尾没有分号。

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

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

相反,QUOTE_NONE会同样有效。

你在这!!!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM