【问题标题】:csv writer adds double quotes twice in pythoncsv writer在python中添加了两次双引号
【发布时间】:2015-09-18 13:14:57
【问题描述】:

我编写了一个 python 脚本来将 href 属性和标签附加到一个字符串,该字符串包含一个 csv 文件中的 url。问题是结果不如预期。结果 html 字符串有一个额外的双引号而不是单引号。任何建议如何解决这个问题? 下面是sn-p:

InputFile = open('data1.csv', 'rb')
OutputFile = open('data3.csv', 'a+b')

CsvReader_InputFile = csv.reader(InputFile, delimiter=',', quotechar='\"')
CsvWriter_OutputFile = csv.writer(OutputFile, delimiter=',', quotechar='\"')

Row_InputFile = CsvReader_InputFile.next()
Row_InputFile[2] = "<a href=\"" + Row_InputFile[2] + "\">Link</a>"
CsvWriter_OutputFile.writerow(Row_InputFile)

输出:

"<a href=""http://www.google.com"">Link</a>"

想要的输出:

"<a href="http://www.google.com">Link</a>"

【问题讨论】:

  • Row_InputFile[2] 来自哪里? (我猜这是因为您在基线中加上引号,并且还告诉 csv 编写器引用它)。

标签: python html csv


【解决方案1】:

这是正确的行为。双引号在 csv 值内被转义。

如果你想输出而不转义,试试csv.QUOTE_NONE

csv.writer(OutputFile, delimiter=',', quotechar='\"', quoting=csv.QUOTE_NONE)

【讨论】:

  • 没错。当引号字符在字符串中时,您期望什么?它必须以某种方式逃脱,并且将它们加倍是一种常见的约定。
【解决方案2】:

我在尝试将 JSON 对象作为字符串存储在 csv 的列中时遇到了这个问题。我在一个用双引号填充的字符串周围加上了单引号。 我的数据行看起来像

['foo', 'bar', '{"foo":"bar". "bar":"foo"}']

这样做解决了我的问题

writer = csv.writer(csv_file, delimiter=',', quotechar="\'", quoting=csv.QUOTE_NONE)

【讨论】:

    【解决方案3】:

    对于那些遇到"Error: need to escape" 错误的人:

    试试这个:

    writer = csv.writer(f, quoting=csv.QUOTE_NONE, delimiter='|', quotechar='',escapechar='\\')
    

    【讨论】:

      猜你喜欢
      • 2016-09-05
      • 2014-04-24
      • 2016-02-09
      • 1970-01-01
      • 2014-07-15
      • 2018-12-16
      • 2015-02-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多