我有以下格式的时间戳列表:
2013年1月1日3:30
我几周前开始学习python,我不知道如何分割日期和时间。你们中的任何人都可以帮助我吗?
输出应该在列上,包括
2013年1月1日
和一栏包括
3:30
答案 0 :(得分: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']]
答案 1 :(得分:0)
如果要在代码中进一步使用此日期和时间来对此数据执行操作(例如比较日期),则可以将此时间戳转换为datetime对象。请参阅日期时间模块上的documentation。
您可以使用以下代码将时间戳转换为datetime对象。
>>> 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建议的方法。
答案 2 :(得分: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