为特定列写双引号的csv文件不起作用

问题描述 投票:11回答:3

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

其中一个列值包含在“”中(双引号),例如:'col1''col2'“ test”,当我在写字板中打开文件时,单词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)
python python-2.7 csv double-quotes
3个回答
14
投票

尝试这个

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/,有很多例子


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

0
投票

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

quotechar= '"'

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

quotechar = "'"

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

© www.soinside.com 2019 - 2024. All rights reserved.