【问题标题】:How to slice using .writerow() in Python如何在 Python 中使用 .writerow() 进行切片
【发布时间】:2012-12-16 06:11:00
【问题描述】:

writerow() 函数有问题。我有一个像这样的对象(orders_matrix):

[[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,

我尝试在 for 循环中使用 writerow() 函数:

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:]])

但无法转换日期时间对象并添加其他元素。我想知道是否可以这样做以及如何做到这一点。

【问题讨论】:

    标签: python datetime csv python-2.7


    【解决方案1】:

    您可以使用日期时间对象的年、月、日属性来获取相关值。因此,最后一行可能会更改为:

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

    【讨论】:

      【解决方案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:])
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-03-01
        • 1970-01-01
        • 1970-01-01
        • 2010-09-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多