【问题标题】:python - TypeError: "quoting" must be an integerpython - TypeError:“引用”必须是整数
【发布时间】:2017-08-23 12:53:50
【问题描述】:

我正在尝试定义一种新格式:

import csv 
f = open("file.csv")
reader = csv.reader(f)

class my_dialect(csv.Dialect):
     lineterminator = '\n'
     delimiter: ';'
     quotechar: '"'

reader = csv.reader(f, dialect=my_dialect)

输出:

TypeError                                 Traceback (most recent call last)
<ipython-input-121-0a8ad3677c01> in <module>()
----> 1 reader = csv.reader(f, dialect=my_dialect)

TypeError: "quoting" must be an integer

来自文档:

方言.quoting 控制何时应由作者生成引用并由读者识别。它可以采用任何 QUOTE_* 常量 (参见模块内容部分)并默认为 QUOTE_MINIMAL。

这是什么意思?

【问题讨论】:

  • 那甚至不是有效的 Python。
  • 如果你只是使用csv,不知道为什么这被标记为熊猫。
  • 需要导入并使用QUOTE_MINIMAL的常量值,或者其他

标签: python csv


【解决方案1】:

首先,您的代码中存在与原始问题无关的语法错误,因此请确保已处理好这些错误(赋值运算符是“=”,而不是“:”)。如果您在课堂上添加引用,它应该可以解决您遇到的错误。您的代码可能看起来像这样--

#! /usr/bin/python

import csv 
f = open("file.csv")
reader = csv.reader(f)

class my_dialect(csv.Dialect):
    lineterminator = '\n'
    delimiter= ';'
    quotechar= '"'
    quoting = csv.QUOTE_MINIMAL

reader = csv.reader(f, dialect=my_dialect)

【讨论】:

  • 什么样的语法错误?在哪里?说有一些错误修复它们不会帮助 OP。如果可以,请说明如何解决它们
  • 上面添加的代码解决了语法问题,但我在帖子的编辑中添加了帮助解释我所指的内容。
  • 非常感谢。我不敢相信我没有意识到我使用的是冒号而不是 '='...
  • 我不明白如果默认为 csv.QUOTE_MINIMAL ,为什么省略引用选项会完全返回此错误?
  • 在课堂上省略“引用”时出现错误的原因是,您在调用 csv.reader 时将课堂作为方言传递。在这种情况下,方言会向您的班级寻找论据,如果找不到一个或多个论据,它就会不喜欢。另一方面,如果您执行了类似 csv.reader(f, lineterminator='\n', delimiter=';', quotechar='"') 之类的操作,则不会遇到同样的错误,因为在这种情况下,“ quoting" 作为 arg 默认为 csv.QUOTE_MINIMAL。请参阅 csv 中 reader 函数的文档以查看函数/构造函数的设置方式。
猜你喜欢
  • 2012-03-23
  • 2016-03-26
  • 2016-02-17
  • 2023-03-03
  • 1970-01-01
  • 2022-11-02
  • 2019-04-26
  • 2020-08-04
  • 1970-01-01
相关资源
最近更新 更多