【问题标题】:How to fix a default new line delimiter in a cx_Oracle csv output into a semicolon delimiter format?如何将 cx_Oracle csv 输出中的默认换行符修复为分号分隔符格式?
【发布时间】:2016-04-03 15:22:36
【问题描述】:

这是我正在使用的脚本的摘录。它基本上是从 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 值周围的引号字符

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

【问题讨论】:

    标签: python csv delimiter cx-oracle


    【解决方案1】:

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

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

    【讨论】:

    • 谢谢,提醒我不需要额外的分号。
    【解决方案2】:

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

    第一个问题是 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 则相反。

    你来了!!!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-05-22
      • 2018-04-02
      • 1970-01-01
      • 1970-01-01
      • 2019-08-02
      • 2018-07-19
      • 1970-01-01
      • 2020-09-01
      相关资源
      最近更新 更多