2013-11-15 38 views
0

我花了一整天的时间试图找到这个问题的解决方案,因为我没有找到一个,但我来这里为您提供帮助!无法在python中获得csv.writer的期望输出

我在写一篇蟒蛇一个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([ '名字' + '姓' + '身份证号' + labString]) 错误:需要逃跑,但没有escapechar集”

现在,我知道这个错误与csv.QUOTE_NONE有关,我必须设置一个escapechar,但我真的不明白我该怎么做。

,如果我尝试没有它会automaticalle设置quotechar到“',这将给我这个输出

"First Name, Surname, StudentID, tut1, tut2, tut3" --> don't want quotation marks!!! 

任何想法?

回答

1

如果你打算写与writerow东西QUOTE_NONE你需要传递一个列表那里,不包含用逗号分隔的一个大的字符串列表(它会出现在一个小区中的字符串)。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 
+0

[对于Python2:](http://docs.python.org/2/library/csv.html)“如果csvfile是一个文件对象,它必须在平台上用”b“标志打开。“[对于Python3:](http://docs.python.org/3.3/library/csv.html)”如果csvfile是一个文件对象,它应该用'newline ='''“打开。 – 2013-11-15 16:15:23