首页 > 解决方案 > 如何在python中将字符串日期列表转换为日期时间

问题描述

我正在尝试将此字符串列表的每个元素转换为 DateTime。我从“日志”文件中提取了这些日期。此列表有 1127655 个元素,如下所示:

01/Aug/1995:00:00:01 
01/Aug/1995:00:00:07 
01/Aug/1995:00:00:08 
01/Aug/1995:00:00:08 
01/Aug/1995:00:00:08 
01/Aug/1995:00:00:09 

我正在尝试将此列表转换为以下格式:

1995-08-01 00:00:09

我尝试将此代码用于 3 个元素的列表:

for item in newdate:
    print(item)
    read = datetime.datetime.strptime(item,'%d/%b/%Y:%H:%M:%S')
    print(read)

它适用于几个元素,但不适用于整个列表。我不断收到此错误:

ValueError: unconverted data remains:

谁能解释这个错误是什么以及为什么我会收到这个错误?

标签: pythonlistdatetime

解决方案


我通过datetime图书馆接近它

这是我得到的:

from datetime import datetime

# Reproducing your file

file = """01/Aug/1995:00:00:01
01/Aug/1995:00:00:07
01/Aug/1995:00:00:08
01/Aug/1995:00:00:08
01/Aug/1995:00:00:08
01/Aug/1995:00:00:09"""

# First, split all lines using `\n`
parsed_dates = file.split("\n") #now your dates are in the form of a python list

# Convert your strings to datetime, using `datetime` library
dates = [datetime.strptime(date, "%d/%b/%Y:%H:%M:%S") for date in parsed_dates]

# Convert your datetimes to strings in the desired format
converted_dates = [str(date) for date in dates] # Year-Month-Day HH:MM:SS is the default output for stringfied dates

# Result:
['1995-08-01 00:00:01',
 '1995-08-01 00:00:07',
 '1995-08-01 00:00:08',
 '1995-08-01 00:00:08',
 '1995-08-01 00:00:08',
 '1995-08-01 00:00:09']


推荐阅读