2013-10-30 106 views
0

我正在關注CSV documentation,並且我正在切線。如何將函數寫入csv文件?我試圖用以下代碼將true_or_false(3)的結果寫入單元格,但好像我缺少括號,撇號或括號。當我嘗試寫它時...我得到一個「無效的語法錯誤」將函數寫入CSV文件

import csv 
#import module 

x = 5 

def true_or_false(n): 
    return n > x 

print true_or_false(3) 

with open('eggs.csv', 'wb') as csvfile: 
    #open csv file 
    spamwriter = csv.writer(csvfile, delimiter= ' ', 
          quotechar= '|', quoting =csv.QUOTE_MINIMAL) 
          #quotechar is the character between apostrophes 
    spamwriter.writerow(['Spam'] * 5 + ['Baked Beans']) 
    # wrote down this 
    spamwriter.writerow(['Spam' 'Lovely Spam', 'Wonderful Spam']) 
    # wrote down that 
    spamwriter.writerow(true_or_false(3) 
    # how to write? 

感謝您的幫助提前。

回答

5

嗯,首先,您需要關閉括號:

spamwriter.writerow(true_or_false(3)) 

第二,你需要把它裏面list - writerow預計可迭代:

spamwriter.writerow([true_or_false(3)]) 

這應該做它。

+0

工作。你知道爲什麼我需要這個函數的括號嗎? –

+0

@RobertBirch他告訴過你 - 'writerow'期待一個可迭代的。這意味着像「list」,「tuple」或生成器這樣的序列。另一方面,「bool」不是一個可迭代的序列。 – roippi

+1

您正在製作一個元素的列表 - 這就是括號所做的。例如,您可以執行'spamwriter.writerow([true_or_false(3),true_or_false(4),true_or_false(5)])'並獲取三個值。 –