2014-08-27 82 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

相關問題