当前位置: 首页 > 面试题库 >

为什么此代码会引发csv.Error?

乐正意智
2023-03-14
问题内容

我正在尝试使用Python的内置csv模块写出CSV 。

import csv
import sys
writer = csv.writer(sys.stdout, delimiter="|", quoting=csv.QUOTE_NONE)
writer.writerow(['"foo', "bar"])

我期望的输出是:

"foo|bar

但是,我得到这个:

Error: need to escape, but no escapechar set

该文件说:

当前定界符出现在输出数据中时,其前面是当前转义符。如果未设置escapechar,则在遇到任何需要转义的字符时,编写器将引发Error。

现在,定界符(“ |”,竖线字符)不会出现在数据中的任何位置。为什么CSV编写器试图逃脱某些东西?


问题答案:

设置quoting=csv.QUOTE_NONE还不够;您还需要设置quotechar一个空字符串:

>>> import sys
>>> import csv
>>> writer = csv.writer(sys.stdout, delimiter="|", quoting=csv.QUOTE_NONE, quotechar='')
>>> writer.writerow(['"foo', "bar"])
"foo|bar

否则,csv.writer()将尝试转义任何现有quotechar字符,但是需要csv.escapechar对此进行设置。



 类似资料:
  • 问题内容: 为什么这段代码不抛出?它在不使用方法的情况下修改了一段时间,这是唯一安全的删除方法。 如果将替换为,则会得到相同的结果。但是,如果我将列表更改为或只是得到了预期的异常。到底是怎么回事?我正在使用是否相关。 编辑 我找到了以下链接 http://bugs.java.com/bugdatabase/view_bug.do?bug_id=4902078 相关部分是 天真的解决方案是将协同修改

  • 这似乎与对象没有被实例化有关,尽管我不太明白为什么。有人知道出什么事了吗?

  • 我正在做一个编码练习:给定一个整数序列作为一个数组,确定是否可以通过从数组中删除不超过一个元素来获得严格递增的序列。 所以我写了这段代码: 现在,这段代码似乎适用于大多数序列,但这段代码引发了一个错误: 错误如下: 我只是不明白列表索引怎么可能超出范围…有人有线索吗?

  • 问题内容: 我想知道为什么在引用“ w”之后会引发错误。您不是通过说obj = w来创建另一个指向该w实例的指针吗?也就是说,为什么与说谢谢一样呢? 问题答案: 没有什么比早上引用JLS更重要。 JLS 6.3。宣言的范围: 块中的局部变量声明的范围(第14.4节)是该声明在其中出现的其余部分,从其自身的初始化程序开始,并在局部变量声明语句的右侧包括其他任何声明符。 和 JLS 14.2 方块:

  • 问题内容: 我为按钮添加了图像,但是当我运行该框架时,将抛出此异常。为什么?请帮助我。 第138行: 第91行: 我使用了此检查不当(建议使用Peter Lang):System.out.println(getClass()。getResource(“ / Images / yahoo_1.gif”)); 它返回null,为什么?请帮我。 问题答案: 这意味着,将返回。 JavaDoc指出,如果

  • 问题内容: 我已经找到了这段代码,无法找出解决方法。在运行代码时,为什么不提示用户输入而不是Java确定没有输入?错误跟踪如下。 这是错误- 问题答案: 简单的答案是当您关闭扫描仪时- 基础输入流也会关闭:http : //docs.oracle.com/javase/7/docs/api/java/util/Scanner.html#close() 要修复此问题,请在主菜单中创建一次:

  • 问题内容: var x int done := false go func() { x = f(…); done = true } while done == false { } 这是Go代码。我的恶魔告诉我,这是UB代码。为什么? 问题答案: Go Memory Model不保证该程序将始终遵守在goroutine中写入x的值。go常规销毁 部分中提供了一个类似的错误程序作为示例。 在本节中,G

  • 问题内容: 我编写了以下程序: 由于通道事件列表是一个缓冲通道,我想我应该获得100倍的输出“嘿!”,但是它只显示一次。我的错误在哪里? 问题答案: 更新(Go 1.2版或更高版本) 从Go 1.2开始,调度程序基于 抢先式多任务处理 原则。这意味着原始问题(以及下面提供的解决方案)中的问题不再相关。 从Go 1.2发行说明中 调度程序中的抢占 在以前的版本中,永远循环的goroutine可能会使