通过选择csv中的列来构建字符串

时间:2015-03-12 17:09:03

标签: python csv

所以现在我有.csv中的时间戳+ ID列表,我想使用项目的部分为列表中的每个项目构建一个字符串,例如:

item = 27.02.2015 02:04:00 70002104

我想建一个字符串,上面写着“在27.02.2015 02:04:00,ID是70002104”

现在我正在使用下面的代码,但是它给了exid列表中的前19个项目,然后是transTime的其余项目,而不是列表中每个项目的前19个字符作为exid和transTime一样休息。

import time, csv

l = open('InputList.csv')
inputList = csv.reader(l)


for item in inputList:
    exid = item[19:]
    transTime = item[:19]
    print 'At ' + str(transTime) + 'the ID is ' + str(exid)

我知道这是一种笨重的方式,但我是编程的新手,这是我能做的最好的。我真正喜欢这样做的方式是.csv看起来像这样:

Date         Time       exid
--------------------------------
27.02.2015   02:04:00   70002104
27.02.2015   02:54:35   70004630

然后对于.csv中的每一行,我都会输出由该行的每一列中的日期,时间和exid组成的字符串。

希望这是有道理的。谢谢你的帮助!

2 个答案:

答案 0 :(得分:1)

如果您的字符串全部采用该格式[date] [time] [id],那么空格上只有split

with open('InputList.csv') as l:
    inputList = csv.reader(l)
    for item in inputList:
        print('At {} {} the ID is {}'.format(*item.split()))

由于您的目标是CSV文件,请查看csv.writer。请注意,csv.DictWriter支持文件writing headers,但您必须编写词典:

fieldnames = ['Date', 'Time', 'exid']
writer.writerow({fieldnames[i]: e for i, e in enumerate(item.split())})

答案 1 :(得分:0)

t = '27.02.2015 02:04:00 70002104'
timestamp, id = t.rsplit(' ', 1)
print('At %s the Id is %s' % (timestamp, id))

t = '27.02.2015 02:04:00 70002104'
date, time, id = t.split(' ')
print('date =  %s time = %s id = %s' % (date, time, id))