2013-01-01 42 views
4

我在writerow()函數中遇到問題。我有一個對象(orders_matrix)是這樣的:如何在Python中使用.writerow()切片

[[datetime.datetime(2008, 11, 20, 16, 0), 'AA', 'Buy', '100'],  
[datetime.datetime(2008, 11, 28, 16, 0), 'AA', 'Sell', '100'], 
[datetime.datetime(2009, 2, 17, 16, 0), 'AA', 'Buy', '100']] 

,並想將它寫在CSV格式是這樣的:

2008,11,20,AA,Buy,100, 
2008,11,28,AA,Sell,100, 
2009,2,17,AA,Buy,100, 

我試圖使用writerow()功能在for循環中:

with open('orders.csv', 'w') as orders_file: 
    writer = csv.writer(orders_file) 
    for row in orders_matrix: 
    writer.writerow([row[:4], row[5:7], row[8:10], row[11:]]) 

但無法轉換datetime對象並添加其他元素。我想知道是否有可能做到這一點,以及如何做到這一點。

回答

5

您可以使用datetime對象的年,月,日屬性來獲取相關值。所以,最後一行可能會被改變:

writer.writerow([row[0].year, row[0].month, row[0].day, row[1], row[2], row[3]]) 
+0

非常感謝,它的工作原理! –

2

您可以使用datetime.timetupledatetime對象轉換爲struct_time對象,然後切出所需要的信息,將其轉換爲一個列表

with open("orders.csv", "wb") as fin: 
    writer = csv.writer(fin) 
    for row in orders_matrix: 
     writer.writerow(list(row[0].timetuple())[:3] + row[1:])