拆分戳我有時間標記的格式如下列表:的Python:按日期和時間
2013年1月1日3:30
我開始學習Python幾個星期前我不知道如何分割日期和時間。你們能幫助我嗎?
輸出應該在列,包括
2013年1月1日
和一列包括
3:30
拆分戳我有時間標記的格式如下列表:的Python:按日期和時間
2013年1月1日3:30
我開始學習Python幾個星期前我不知道如何分割日期和時間。你們能幫助我嗎?
輸出應該在列,包括
2013年1月1日
和一列包括
3:30
我認爲所有你需要的是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']]
如果您想進一步利用此日期和時間在你的代碼對這個數據,如執行操作比較日期,您可以將此時間戳轉換爲日期時間對象。在日期時間模塊上參考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建議。
這裏是僞代碼來完成你已經在你的評論中提及的內容:
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
是否列表包含實際的datetime對象,或者只是字符串? – pygeek
我想我必須稍微修改一下我的問題,謝謝。我有一個包含19列的csv文件。 在第10列中,時間戳看起來如上所述。 我想用時間戳分隔列並添加2個新列,包括腳本的輸出。 – user3458170
如果我已回答您的問題,請將答案標記爲已回答。 – pygeek