如何以行协议格式显示CSV文件?

3
如何将CSV文件以行协议格式显示,就像influxdb使用的那样?
measurement[,tag_key1=tag_value1...]
field_key=field_value[,field_key2=field_value2] [timestamp]

假设我的CSV文件如下:
Date          Time            place       status      action
2 sep 2016   12:05:50:274     abc          on         batery on
16 sep 2016  12:05:51:275     mbc          on         batery on
22 sep 2016  12:05:52:276     kabc          on        batery on

我可以使用以下代码逐行读取整个csv文件:

**with open('test.csv') as fp:
      for line in fp:
         print line**

我得到的输出结果为:

['Date','Time','place','status','action']
['2 sep 2016','12:05:50:274','abc','on','batery on']['16 sep 2016','12:05:51:275','mbc',     'on','batery on']['22 sep 2016','12:05:52:276','kabc','on','batery on']

我希望输出的格式或语法是行协议格式或语法,例如:

Date=2 sep 2016,place=abc,'status=on,action=battery on,Time=12:05:50:274

同时,我希望代码能够将Time=12:05:50:274转换为Epoch时间,以便在Influx DB的行协议中用作时间戳。

1个回答

2
您需要使用行的“Date”属性,以便进行转换为纪元时间。以下是您可以使用的一种方式:
from __future__ import print_function

import csv
from datetime import datetime as dt

with open('test.csv') as infile:
    headers = next(csv.reader(infile))

with open('test.csv') as infile:
    for row in csv.DictReader(infile):
        row['Time'] = dt.strptime(row['Date'] + " " + row['Time'].rsplit(":",1)[0], "%d %b %Y %H:%M:%S")
        print(','.join(["%s=%s" %(header, row[header]) for header in headers])

@inspectorG4dget 这个CSV文件怎么保存在本地系统中? - surya rahul
@suryarahul:它并没有保存在文件系统中,只是显示在控制台上。如果你想要保存到文件系统中,你可以使用IO重定向或编辑print来包含一个打开的文件对象。 - inspectorG4dget

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接