【问题标题】:Python 2.7 formatting data for writing as csvPython 2.7 格式化数据以写入 csv
【发布时间】:2014-03-28 21:45:24
【问题描述】:

我正在尝试将数据写入 CSV 文件。我有来自多个传感器的数据和来自实时时钟的时间/日期。 传感器数据很好,但我正在循环格式化 RTC 数据。我已经尝试了很多事情,并阅读了我老化的大脑可以处理的尽可能多的相关帖子。

时钟数据在val中

#print "second =", val[0]
#print "minute =", val[1]
#print "hour =", val[2]
#print "day of week =", val[3]
#print "day of month =", val[4]
#print "month =", val[5]
#print "year =", val[6]

例如,这会打印时间后跟日期。

print "RTC Time is ", val[2], ":", val[1], ":", val[0]
print "RTC Date is ", val[4], "/", val[5], "/", "20",val[6]

我得到的最接近我真正想要的是。

   import csv

   datetime = val[6],val[5],val[4],val[2],val[1],val[0]

   filecsv = open('tidelog.csv', 'a+') #writing to csv log file
   writer = csv.writer(filecsv,dialect='excel')
   stuff = [datetime, temp_inside, humidity, press, response]
   writer.writerow(stuff)
   filecsv.close()

输出的 csv 看起来像这样

"(14, 3, 28, 15, 52, 37)",29,47,1005,2208

日期/时间 yy mm dd hh mm ss 在引号内

我想要得到的是第一列中带有连字符分隔符的日期时间,如下所示。

14-3-28-15-52-37,29,47,1005,2208

任何帮助将不胜感激

德里克

【问题讨论】:

  • datetime.strftime 是你的朋友。
  • 这个datetime = val[6],val[5],val[4],val[2],val[1],val[0] 隐式创建了一个元组。在解释器中尝试>>> 1,2,3

标签: python datetime csv


【解决方案1】:

您可以将join 与连字符一起使用,如下所示:

>>> val
[37, 52, 15, 4, 28, 3, 14]
>>> '-'.join(str(x) for x in [val[6],val[5],val[4],val[2],val[1],val[0]])
'14-3-28-15-52-37'

您的方法不起作用,因为您正在隐式创建一个元组:

>>> 1,2,3
(1, 2, 3)
>>> val[6],val[5],val[4],val[2],val[1],val[0]
(14, 3, 28, 15, 52, 37)

编辑

如 cmets 所述,您可以在列表中使用 reversed,而不是逐个索引:

>>> list(reversed([1,2,3,4,5]))
[5, 4, 3, 2, 1]

【讨论】:

  • 如果你使用reversed()可能会更容易阅读
  • 下次我会尽量记住倒过来的
猜你喜欢
  • 1970-01-01
  • 2018-06-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-18
  • 2016-07-29
  • 1970-01-01
相关资源
最近更新 更多