2015-10-06 111 views
0
with open("classA.csv" , "a", newline = "") as fp: 
    a = csv.writer(fp, delimiter = ",") 
    data = [("{0} has scored: {1}/10\n ".format(name,score))] 
    a.writerows(data) 

我想創建一個數學測驗,計算最終結果,然後將此結果寫入Excel文件。這是到目前爲止我的代碼,但是當我看到Excel中,我看到,在數據的整個語句在該行中伸了出來,想這樣:在python中寫入csv文件

| B | o | b | h | a | s | s | c | o | r | e | d | : | 9 |/| 1 | 0 

我怎麼能打印出這樣的:

| Bob has scored: | 9/10 | 

感謝您的幫助!

+0

writerows預計iterables –

回答

2

您需要提供列表中的列的元組,您傳遞給writerows

元組中的每個元素將是結果文件中的一列,並且列表中的所有元組都表示行。

例如,如果你想輸出:

Bob,2 
Joe,3 
Bill,5 

然後,你需要創建像這樣的列表:

[('Bob', 2), ('Joe', 3), ('Bill', 5)] 

實現相同的在你的榜樣,試試這個版本:

col1, col2 = '{} has scored:','{}/10' 

with open('classA.csv', 'a') as fp: 
    writer = csv.writer(fp, delimiter=',') 
    data = [(col1.format(name), col2.format(score))] 
    writer.writerows(data) 

您也不需要添加\n

0

您的分隔符是「」所以你應該嘗試:data = [("{0} has scored,{1}/10\n ".format(name,score))]或設置分隔符‘:’

+0

問題的迭代是'writerows'被遍歷字符串,分隔符ISN」問題。 – Monkpit