2017-09-01 55 views
1

我有一行数据,我试图写一个.tab文件看起来像这样:csv.writer用单引号字符

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) 

我一直在使用尝试和这个的几个变化。我总是得到错误Error: need to escape, but no escapechar set。避免中间单引号的最好方法是什么?是否可以使用csv模块?

+2

转义它有什么问题?试着不要看起来不好。 – wim

+0

开头括号没有一个匹配的结尾是有意的还是它是一个错字? – DyZ

+0

我不想逃避单引号,因为我将数据导入到的系统不能识别转义字符。 – Hound

回答

2

你可以使用不同的quotechar

​​
+0

对于Python 2,你应该使用'open(file_name,'wb')'以二进制模式打开文件 – martineau

+0

我不想使用任何转义字符 – Hound

+0

@Hound你也可以使用'quotechar = None',但是我给你的版本会为你显示的示例行生成你想要的。 –

-2

如果您想要转义字符,请使用\

在你例子,这将是\"

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")