【问题标题】:Python: CSV module. EscapeChar is messing up the outputPython:CSV 模块。 EscapeChar 搞乱了输出
【发布时间】:2014-06-07 04:35:54
【问题描述】:

尝试打开包含引号的 CSV 文件并将其删除。我查看了 python 的 CSV 模块的文档,它正在删除我想要的引号,但输出试图转义逗号,这是我试图避免的。这段代码:

csv.register_dialect('escaped',delimiter=",", escapechar="\\",  quoting=csv.QUOTE_NONE)
reader = csv.reader(open(input_file, "rb"), skipinitialspace=True)
writer = csv.writer(open(output_file, "wb"), dialect='escaped')

writer.writerows(reader)

产生类似 value1\,value2 的输出。我如何从那里得到反斜杠,所以它只是输出中的逗号。输入文件包含一堆看起来像这样的行:

"Value1,Value2"

【问题讨论】:

  • 为了清楚起见,您能否在问题中包含几行输入文件?

标签: python csv escaping


【解决方案1】:

您观察到的行为与文档 says 关于 QUOTE_NONE 的内容一致

如果您要做的只是去掉引号,并且考虑到输入行与您在 cmets 中提到的一样简单,这难道不可行吗?

with open('input') as in_file, open('output', 'w') as out_file:
    for line in in_file:
        out_file.write(line.replace('\"', ''))

【讨论】:

  • @Stev0 一定是文件句柄有问题。上面的代码完美地从输入文件读取并写入输出文件
  • 我想通了....我很惭愧地说我正在使用相同的输入文件运行不同的 python 文件。我只是在命令行中按下并没有意识到这一点。现在我正在使用写入文件,工作完美。谢谢!
猜你喜欢
  • 2013-06-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-19
  • 2017-07-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多