具有单引号字符的csv.writer

时间:2017-09-01 23:37:46

标签: python special-characters python-2.x

我有一行数据,我试图写入.tab文件,如下所示:

row = ['07/19/2017/10/33/30', 'gg_ca_18" dishwashers_204454792491_1t1',
       Decimal('369.00'), 1L, '66745355']

我想保留单引号未转义,以便它看起来像这样:

07/19/2017/10/33/30 gg_ca_18" dishwashers_204454792491_1t1  369.00  1   66745355

我正在使用以下代码写入文件:

with open(file_name, 'wb') as outfile:
        a = csv.writer(outfile, delimiter='\t') # ,escapechar=None, quoting=csv.QUOTE_NONE
        a.writerows(row)

我尝试过使用escapechar=None, quoting=csv.QUOTE_NONE及其中的几种变体。我总是得到错误Error: need to escape, but no escapechar set。什么是不能逃脱中间单引号的最佳方法?是否可以使用csv模块?

3 个答案:

答案 0 :(得分:2)

您可以使用其他quotechar

with open(file_name, 'w') as outfile:
    a = csv.writer(outfile, delimiter='\t', quotechar="'")
    a.writerow(row)

答案 1 :(得分:1)

如果您不想转义任何内容,则它不再是CSV文件。将每个行项转换为字符串,将字符串连接成一个字符串,并将其写入文件:

line = ' '.join(map(str,row))
#'07/19/2017/10/33/30 gg_ca_18" dishwashers_204454792491_1t1 369.00 1 66745355'
outfile.write(line + "\n")

答案 2 :(得分:-2)

如果要转义某个角色,请使用\

在您的示例中,它将是\"