【问题标题】:Delimiters in csv.writer creates additional quotescsv.writer 中的分隔符创建额外的引号
【发布时间】:2022-01-03 16:20:04
【问题描述】:

我在尝试通过 csv 写入器将数据导出到 Excel 文件时遇到问题。

当我尝试使用默认分隔符(逗号)导出它时,它会正确执行。这是带有默认分隔符的代码:

with open(file, 'w', encoding="utf-8", newline='') as csvfile:
            writer = csv.writer(csvfile, dialect='excel',quoting=csv.QUOTE_NONNUMERIC)

输出:

"ID","Title","Genre","Country" 
"A4321","Film1","Horror","USA"
"A4322","Film2","Romance","France"
"A4323","Film3","Comedy","Germany"
"A4324","Film4","Western","UK"

当我通过逗号分隔符将文本转换为 Excel 中的列时,它会在列中正确分隔。

但是,如果我尝试使用竖线 (|) 作为分隔符,输出会很奇怪,因为它会在文件中创建更多引号。这是代码,我只添加了分隔符的规范:

with open(m_file, 'w', encoding="utf-8", newline='') as csvfile:
            writer = csv.writer(csvfile, dialect='excel', delimiter ='|', quoting=csv.QUOTE_NONNUMERIC)

输出:

"ID"|"Title"|"Genre"|"Country" 
"A4321|""Film1""|""Horror""|""USA""
"A4322|""Film2""|"Romance""|"France""
"A4323|""Film3""|""Comedy""|""Germany""
"A4324|""Film4""|""Western""|""UK""

并且用竖线分隔符分隔在 Excel 上不起作用。

我尝试过更改引用,添加escapecharsdoublequotes = False,但它不起作用

我应该改变什么吗?

【问题讨论】:

    标签: python python-3.x csv


    【解决方案1】:

    无法重现:

    import csv
    
    m_file = "tata.csv"
    
    data = [["A","a", 5], 
            ["B","b", 7], 
            ["C","c", 9], 
            
    ]
    with open(m_file, 'w', encoding="utf-8", newline='') as csvfile:
        writer = csv.writer(csvfile, dialect='excel', delimiter ='|',
                            quoting=csv.QUOTE_NONNUMERIC)
        writer.writerows(data)
    
    with open(m_file) as f:
        print(f.read())
    

    文件内容:

    "A"|"a"|5
    "B"|"b"|7
    "C"|"c"|9
    

    将数据更改为

    data = [["A","a", 5], 
            ["B","b", 7], 
            ['"C"','"c"', 9], 
    

    导致

    "A"|"a"|5        
    "B"|"b"|7        
    """C"""|"""c"""|9
    

    仍然不是你得到的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-06-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-26
      • 2017-09-13
      • 2012-06-26
      相关资源
      最近更新 更多