我需要一个python脚本来在csv文件的每一列中添加文本。文件夹中有330个csv文件,格式为:
14-04-03T08:52:38;...
14-04-03T08:52:39;...
14-04-03T08:52:40;...
...
我需要这种格式(2014年代替14):
2014-04-03T08:52:38;...
2014-04-03T08:52:39;...
2014-04-03T08:52:40;...
...
我怎么能意识到这一点?
我的打印代码示例:
import os
import sys
import csv
dirList = os.listdir(sys.argv[1])
dirList.sort()
for sFile in dirList:
changeFile = sys.argv[1] + sFile
print changeFile
with open(changeFile, 'rb') as f:
reader = csv.reader(f, delimiter=';')
for row in reader:
print row[0]
使用此输出:
14-04-03T12:03:34
14-04-03T12:03:35
14-04-03T12:03:36
如何添加" 20"到每一栏的开头?
答案 0 :(得分:0)
一种方法是将文件作为文本文件打开并读取每一行,然后将“20”+行写入输出文件,删除原始文件并将输出重命名为原始文件。
答案 1 :(得分:0)
在阅读CSV文件的每个元素时,只需解析并转换日期字符串即可。
你可以通过以下方式完成:
import time
import datetime
datetime.datetime(
*(time.strptime("14-04-03T08:52:38","%y-%m-%dT%H:%M:%S")[:6])
).strftime('%Y-%m-%dT%H:%M:%S')
那它做了什么?
它将您的一个日期字符串作为输入,如"14-04-03T08:52:38"
并将其解析为实时对象。
我们将此时间对象转换为日期时间对象,并将其重新格式化为您的年份的不同输出,因此:'2014-04-03T08:52:38'
现在你只需要替换csv中的值,然后关闭:-)
import os
import sys
import csv
import datetime
import time
dirList = os.listdir(sys.argv[1])
dirList.sort()
for sFile in dirList:
changeFile = sys.argv[1] + sFile
print changeFile
with open(changeFile, 'rb') as f:
reader = csv.reader(f, delimiter=';')
for row in reader:
print datetime.datetime(
*(time.strptime(row[0],"%y-%m-%dT%H:%M:%S")[:6])
).strftime('%Y-%m-%dT%H:%M:%S')