我正在尝试使用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)
答案 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个字符的字符串,那么该怎么办