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

т.е. дд/мм гггг/00:00:00, тем самым сохраняя выход в новом файле, т.е. date1.csv.

Как я могу это сделать?

+1

Ha Вы пытались использовать 'date'? Прочтите man-страницу. Являются ли ваши поля csv csv или просто разделителями пробелов? – Daenyth

+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. –

ответ

1

Вы можете использовать утилиту даты GNU, чтобы выполнить преобразование:

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

Как бы вы интегрировали отображение соответствующего поля каждой строки в вывод? –

+0

Вы хотите вытащить это из других полей в CSV? Вы можете использовать sed/awk, но я мог бы предложить использовать библиотеку CSV, например ['csv'] (https://docs.python.org/2/library/csv.html) в стандартной библиотеке Python. – bjmc

+1

Грубо, данные, переданные команде 'date', представляют собой одно поле в CSV-файле, поэтому вам нужно будет вызывать команду' date' один раз на строку ввода, извлекая поле даты из строки и затем перепишите строку с заменяющим значением даты. Ваше предложение отображает одно значение - важный компонент всей задачи, но не всю задачу. –

Смежные вопросы