2016-11-08 78 views
0

如何格式化日期和時間時間戳?格式化時間,Python

下面是一些示例數據,「data1.csv」:

Mary,11/13/16 10:38 
John,11/14/16 12:53 
Paul,11/13/16 14:45 
Ringo,11/13/16 12:17 
George,11/14/16 10:15 

我想創建一個文件有三列。 第一列是名稱。 第二列只是日期'mm/dd/yy'。 第三欄只是軍事時間的'HH:MM'時間。

以下是我正在使用的代碼並希望保留。

def process_data(raw_data): 
    with open(raw_data) as inputs: 
     for line in inputs: 
      name, time = line.strip().split(",") 
      mylist = list() 
      mylist.append(name) 
      mylist.append(time) #As 'mm/dd/yy' 
      mylist.append(time) #As 'HH:MM' 
      print ",".join(mylist) 

if __name__ == "__main__": 
    process_data("data1.csv") 

此外,將其保存到csv文件的正確方法將有助於我的理智。
最後的文件應該有:

Mary,11/13/16,10:38 
John,11/14/16,12:53 
Paul,11/13/16,14:45 
Ringo,11/13/16,12:17 
George,11/14/16,10:15 
+2

你爲什麼不做'line.replace('',',')'? – user3030010

+0

我希望你已經聽說過['csv'模塊](https://docs.python.org/3/library/csv.html)。它可以幫助,例如,你的名字中帶有逗號。 –

+0

@ user3030010 - 數據不準確,我試圖操作12-15列的數據,幾列處理時間,簡單地用「」替換「」,「是無用的。 – Mobs

回答

1

如果你真正想要做的就是用逗號更換空間,那麼最簡單的方法,如在評論中指出,將

line.strip().replace('', ',') 

您可以使用Python內置的datetime包將每個字符串轉換爲日期時間對象。然後,可以在將它們寫入新文件時提取所需的部分。

import datetime.datetime as dt 

name, time_string = line.strip().split(',') 
time_object = dt.strptime(time_string, '%m/%d/%y %H:%M') 
date = time_object.strftime('%m/%d/%y') 
time = time_object.strftime('%H:%M') 

這將使您可以靈活方便地更改格式,如果你願意的話。

+0

好的...好吧,我試了幾天,無法阻止錯誤。但是,它得到了它。 – Mobs

0
$ cat input 
Mary,11/13/16 10:38 
John,11/14/16 12:53 
Paul,11/13/16 14:45 
Ringo,11/13/16 12:17 
George,11/14/16 10:15 

$ cat time_.py 
import csv 
with open("input") as reader, open("output.csv", "w") as writer: 
    writer = csv.writer(writer, delimiter=",", quoting=csv.QUOTE_NONE) 
    for line in reader.readlines(): 
     name, time = line.strip().split(",") 
     day, clock = time.split() 
     writer.writerow((name, day, clock)) 

$ python time_.py 

$ cat output 
Mary,11/13/16,10:38 
John,11/14/16,12:53 
Paul,11/13/16,14:45 
Ringo,11/13/16,12:17 
George,11/14/16,10:15 
0

這樣的事情可以完成這項工作。

from datetime import datetime 
import tablib 

DATE_FORMAT = '%m/%d/%y' 
TIME_FORMAT = '%H:%M' 

data = [ 
    ('Mary', '11/13/16 10:38'), 
    ('John', '11/14/16 12:53'), 
    ('Paul', '11/13/16 14:45'), 
    ('Ringo', '11/13/16 12:17'), 
    ('George', '11/14/16 10:15'), 
] 

results = tablib.Dataset() 

for item in data: 
    name, datetime_string = item 
    _datetime = datetime.strptime(datetime_string, '{} {}'.format(DATE_FORMAT, TIME_FORMAT)) 
    date = _datetime.strftime(DATE_FORMAT) 
    time = _datetime.strftime(TIME_FORMAT) 

    results.append((name, date, time)) 

print(results.csv)