You are using writer.writerows() with s at the end. This method expects a list of lists, but you passed a list of strings. The writerows() method essentially does this:
def writerows(self, rows): for row in rows: self.writerow(row)
where each row should be a sequence of columns. A string is a sequence of individual characters, so you wrote: individual characters, separated by your chosen delimiter.
You need to divide your row into columns, do not include commas yourself, this is the task of the author object to include them:
with open('example1.csv', 'w') as result: writer = csv.writer(result, delimiter=",") writer.writerow(('Correct?', 'Successes', 'Failures')) for row in list_results: columns = [c.strip() for c in row.strip(', ').split(',')] writer.writerow(columns)
or using a generator expression so you can use writerows() :
with open('example1.csv', 'w') as result: writer = csv.writer(result, delimiter=",") writer.writerow(('Correct?', 'Successes', 'Failures')) writer.writerows([c.strip() for c in r.strip(', ').split(',')] for r in list_results)
Demo:
>>> import csv >>> list_results = ['False, 60, 40 ', 'True, 70, 30, '] >>> import csv >>> import sys >>> list_results = ['False, 60, 40 ', 'True, 70, 30, '] >>> writer = csv.writer(sys.stdout) >>> writer.writerow(('Correct?', 'Successes', 'Failures')) Correct?,Successes,Failures >>> for row in list_results: ... columns = [c.strip() for c in row.strip(', ').split(',')] ... writer.writerow(columns) ... False,60,40 True,70,30 >>> writer.writerows([c.strip() for c in r.strip(', ').split(',')] ... for r in list_results) False,60,40 True,70,30