2014-03-25 31 views
-1

拆分戳我有時間標記的格式如下列表:的Python:按日期和時間

2013年1月1日3:30

我開始學習Python幾個星期前我不知道如何分割日期和時間。你們能幫助我嗎?

輸出應該在列,包括

2013年1月1日

和一列包括

3:30

+1

是否列表包含實際的datetime對象,或者只是字符串? – pygeek

+0

我想我必須稍微修改一下我的問題,謝謝。我有一個包含19列的csv文件。 在第10列中,時間戳看起來如上所述。 我想用時間戳分隔列並添加2個新列,包括腳本的輸出。 – user3458170

+0

如果我已回答您的問題,請將答案標記爲已回答。 – pygeek

回答

0

我認爲所有你需要的是str.split ...

>>> s = '1/1/2013 3:30' 
>>> s.split() 
['1/1/2013', '3:30'] 

如果它在列表中,你可以用一個列表理解做:

>>> lst = ['1/1/2013 3:30', '1/2/2013 3:30'] 
>>> [s.split() for s in lst] 
[['1/1/2013', '3:30'], ['1/2/2013', '3:30']] 
0

如果您想進一步利用此日期和時間在你的代碼對這個數據,如執行操作比較日期,您可以將此時間戳轉換爲日期時間對象。在日期時間模塊上參考documentation

您可以使用下面的代碼將您的時間戳轉換爲日期時間對象。

>>> import datetime 
>>> timestamp = datetime.datetime.strptime("1/1/2013 3:30", "%d/%m/%y %H:%M") 
>>> timestamp 
datetime.datetime(2013, 1, 1, 3, 30) 
>>> timestamp.date() 
datetime.date(2013, 1, 1) 
>>> timestamp.time() 
datetime.time(3, 30) 

如果你只是想要去除的日期和時間將它們作爲字符串,使用方法,通過mgilson建議。

0

這裏是僞代碼來完成你已經在你的評論中提及的內容:

f = file("path/to/file.csv", "r") 
timestamp_column = 10 

def get_updated_row(i, row): 
    row = row.split(',') 

    try: 
     timestamp = row.pop(timestamp_column) #remove column 

     if i == 0: 
      #header 
      row.extend(["date", "time"]) #add columns 

     else: 
      #normal row 
      date = timestamp[0] 
      time = timestamp[1] 
      row.extend([date, time]) 

    except IndexError: 
     print("ERROR: Unable to parse row {0}".format(i)) 

    return ','.join(row) 

with f.read() as csv: 
    for i, row in enumerate(csv): 
     print(get_updated_row(i, row)) #write to file here instead if necessary