用特殊列无效的双引号写csv文件

时间:2014-07-31 10:43:26

标签: python python-2.7 csv double-quotes

我正在尝试使用python csv writer编写一个csv文件。

其中一个列值包含在“”[双引号]中,例如:'col1''col2'“test”,当我在wordpad中打开文件时,单词test预计为“test”但实际结果为“”“test”“”

有人可以指导这个问题。

我试用的示例片段:

csvReader = csv.reader(iInputFile)
writer = csv.writer(open('one_1.csv', 'wb'), delimiter=',', lineterminator='\r\n')

for row in csvReader:
     rawRow = []
     rawRow.append('31-7-2014') #Appending Date
     rawRow.append(row[0])   #Appending data
     rawRow.append('\"'+'test'+'\"') 
     writer.writerow(rawRow)

3 个答案:

答案 0 :(得分:11)

试试这个

f_writ = open('one_4.csv', 'wb')
csvReader = csv.reader(iInputFile)
writer = csv.writer(f_writ, delimiter=',',
                lineterminator='\r\n',
                quotechar = "'"
                )

for row in csvReader:

    writer.writerow(['31-7-2014',row[0],'\"text\"'])

f_writ.close()

我也发现这个链接非常有用 http://pymotw.com/2/csv/,有很多例子

答案 1 :(得分:3)

可能你需要使用参数引用和escapechar。

例如,修改后的代码

csvReader = csv.reader(iInputFile)
writer = csv.writer(open('one_1.csv', 'wb'), delimiter=',', lineterminator='\r\n', quoting=csv.QUOTE_NONE, escapechar='\\')

for row in csvReader:
     rawRow = []
     rawRow.append('31-7-2014') #Appending Date
     rawRow.append(row[0])   #Appending data
     rawRow.append('\"'+'test'+'\"') 
     writer.writerow(rawRow)

将产生类似的输出:

31-7-2014,'col1',\"test\"

答案 2 :(得分:0)

据我从@GiovanniPi接受的答案中得知,默认值为

quotechar= '"'

由于预期的输出已经有双引号,因此必须将其更改为:

quotechar = "'"

我不确定如果需要同时使用单引号和双引号,因为quotechar需要一个1个字符的字符串,那么该怎么办