Python 2.7格式化数据以写为csv

时间:2014-03-28 21:45:24

标签: python datetime csv

我试图将数据写入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

任何帮助将不胜感激

德里克

1 个答案:

答案 0 :(得分: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)

修改

如评论中所述,您可以在列表中使用reversed,而不是按索引编制索引:

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