2014-08-27 113 views
0

我有一个带有不同日期的date.csv文件,我无法将其转换为时间戳。 例如使用Unix将日期转换为时间戳

date.csv有下列日期: -

Mar 24 2014 
Apr 1 2014 
Aug 25 2014 

我想上面的日期转换为: -

03/24/2014 00:00:00 
04/01/2014 00:00:00 
08/25/2014 00:00:00 

即MM/DD/YYYY 00:00:00格式,从而将输出存储在新文件中,即date1.csv

我该怎么做?

+1

哈你有没有尝试过使用'date'?阅读联机帮助页。您的csv是csv还是空格分隔的字段? – Daenyth 2014-08-27 17:59:05

+0

日期是否出现在文件的一列中 - 比如第3列 - 并且您需要某种方式来转换日期?对可以使用的工具有任何限制吗?例如,Perl有[Text :: CSV](http://search.cpan.org/perldoc?Text%3A%3ACSV)来读取和写入CSV文件,[POSIX :: strptime](http:// search .cpan.org/perldoc?POSIX%3A%3Astrptime)和[POSIX :: strftime](http://perldoc.perl.org/POSIX.html#strftime)。请注意,可能需要安装Text :: CSV和POSIX :: strptime。 – 2014-08-27 18:02:53

回答

1

您可以使用GNU date命令来执行转换:

date +"%m/%d/%Y %H:M:%S" -d "Mar 24 2014" 
03/24/2014 00:00:00 

的问题没有明确规定可以使用什么工具,但是这是在Python碱性溶液来处理在CSV文件中读取,转换日期,并将其输出到另一个CSV文件:

#!/usr/bin/python 

import csv 
from datetime import datetime 
import sys 

DATE_COLUMN = 3 # Or whatever column has the date 

input_file = sys.argv[1] 
output_file = sys.argv[2] 

with open(input_file) as i_f: 
    reader = csv.reader(i_f) 
    with open(output_file, 'w') as o_f: 
     writer = csv.writer(o_f) 
     for row in reader: 
      date = datetime.strptime(row[DATE_COLUMN], "%h %d %Y") 
      row[DATE_COLUMN] = date.strftime("%m/%d/%Y %H:M:%S") 
      writer.writerow(row) 

用法:

python csv_date_converter.py input_file output_file 
+0

您将如何将每行的相关字段映射到输出中? – 2014-08-27 18:03:59

+0

你的意思是从CSV中的其他字段拉出来?您可以使用sed/awk,但我可能会建议使用CSV库,如Python标准库中的['csv'](https://docs.python.org/2/library/csv.html)。 – bjmc 2014-08-27 18:06:25

+1

粗略地说,传递给'date'命令的数据是CSV文件中的一个字段,因此您需要在每行输入中调用一次'date'命令,从行中提取日期字段,以及然后用替代日期值重写该行。你的建议映射出一个价值 - 整个任务的重要组成部分,但不是整个任务。 – 2014-08-27 18:10:27