Python 2.7 格式化数据以写入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 个回答
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]