我花了一整天的时间试图找到解决这个问题的方法,因为我找不到一个,但是我来这里是为了你的帮助!
我正在python上编写一个CSV文件导出器,我无法将其输出到我想要的地方
假设我有一个包含多个教程标题的字符串列表:
tutorials = ['tut1', 'tut2, 'tut3']
我想在csv文件的第一行打印,如下所示:
First Name, Surname, StudentID, tut1, tut2, tut3
现在,这是我写的代码:
tutStr= ' '
for i tutorials:
tutStr += i + ', '
tutStr = tutStr[0:-3]
with open('CSVexport.csv', 'wb') as csvFile:
writer = csv.writer(csvFile, delimiter=',', quoting=csv.QUOTE_NONE)
writer.writerow(['First Name'+'Surname'+'ID number'+tutStr)
这给了我错误:
“writer.writerow(['First Name'+'Surname'+'ID number'+ labString])
错误:需要转义,但没有escapechar设置“
现在,我知道错误与csv.QUOTE_NONE有关,我必须设置一个escapechar,但我真的不明白我该怎么做。
如果我在没有QUOTE_NONE的情况下尝试,它会自动将quotechar设置为'“',这将为我提供此输出
"First Name, Surname, StudentID, tut1, tut2, tut3" --> don't want quotation marks!!!
有什么想法吗?
答案 0 :(得分:1)
如果你要用writer编写一些东西,你需要在那里传递一个列表,而不是包含一个用逗号分隔的大字符串的列表(它将在一个单元格中显示为一个字符串)。 quoting=csv.QUOTE_MINIMAL
将有助于引用需要引用的字符串。
tutorials = ['tut1', 'tut2', 'tut3']
headers = ['First Name', 'Surname', 'ID number'] + tutorials
first_line = True
with open('CSVexport.csv', 'w') as csvFile:
writer = csv.writer(csvFile, delimiter=',', quoting=csv.QUOTE_MINIMAL)
if first_line:
writer.writerow(headers)
first_line = False