如何在python中引用csv writer中的转义字符

时间:2013-04-26 02:31:05

标签: python csv

我正在编写像这样的csv文件

for a in products:
    mylist =[]
    for h in headers['product']:
        mylist.append(a.get(h))
        writer.writerow(mylist)

我的几个字段是文本字段,可以包含任何字符,例如, " ' \n或其他任何字符。在csv文件中编写该文件最安全的方法是什么。也文件也有整数和浮点数

2 个答案:

答案 0 :(得分:7)

您应该使用 QUOTE_ALL 引用选项:

import StringIO
import csv

row = ["AAA \n BBB ,222 \n CCC;DDD \" EEE ' FFF 111"]

output = StringIO.StringIO()
wr = csv.writer(output, quoting=csv.QUOTE_ALL)
wr.writerow( row )

# Test:
contents = output.getvalue()
parsedRow = list(csv.reader([contents]))[0]

if parsedRow == row: print "BINGO!"

答案 1 :(得分:1)

使用csv.QUOTE_ALL将确保引用所有条目,如下所示: 使用csv.QUOTE_NONE时"value1","value2","value3"将为您提供:value1,value2,value3

此外,这会将条目中的所有引号更改为双引号,如下所示。 "somedata"user"somemoredata将成为。{ 你写的.csv中的"somedata""user""somemoredata

但是,如果将quotechar设置为反斜杠字符(例如),则所有引号的条目将返回为\“。

  create=csv.writer(open("test.csv","wb"),quoting=csv.QUOTE_NONEescapechar='\\', quotechar='"')
for element in file:
    create.writerow(element)

,上一个示例将变为somedata\"user\"somemoredata,这是干净的。它也将以相同的方式转义元素中的任何逗号。