datetime - python将日期列表作为字符串转换为日期列表
问题描述
我有一个作为字符串导入的日期列表。我尝试了很多不同的方法将其转换为日期列表。不管我怎么做,我都会出错。
#import valid dates from map file as list
valdts = dfmap.loc[row, 'valdata'].split(', ')
print(valdts)
>>
['1/1/1990', '6/6/1990', '7/4/1776']
#convert strings to dates
attempt1:
valdts = [d.strftime('%Y-%m-%d') for d in valdts]
>>
AttributeError: 'str' object has no attribute 'strftime'
attempt2:
a = [date_obj.strftime('%Y%m%d') for date_obj in valdts]
>>
AttributeError: 'str' object has no attribute 'strftime'
attempt3:
a = datetime.strptime(valdts, '%d %b %Y')
>>
TypeError: strptime() argument 1 must be str, not list
attempt4:
a = valdts.sort(key = lambda dt: datetime.strptime(dt, '%d %m %Y'))
>>
ValueError: time data '1/1/1990' does not match format '%d %m %Y'
attempt5:
for dt in valdts:
dt = dt.replace('/',',')
print(dt)
c = datetime.strptime('.'.join(str(i) for i in dt).zfill(8), "%Y.%m.%d")
>>
'1,1,1990'
ValueError: time data '1.,.1.,.1.9.9.0' does not match format '%Y.%m.%d'
attempt6:
for dt in valdts:
dt = dt.replace('/',',')
datetime.strptime(dt, '%d %m %Y')
>>
ValueError: time data '1,1,1990' does not match format '%d %m %Y'
我越来越沮丧。上述不同的方法是基于对其他人发布的类似但不完全相同的问题的回答。与我最相似的问题已被否决。我是在尝试做一些愚蠢的事情吗?非常感谢这里的一些帮助。谢谢。
注意: datetime.datetime 给我一个错误。AttributeError: type object 'datetime.datetime' 没有属性 'datetime'但只有 datetime 适用于我的代码的其他部分。
解决方案
这是我最终想出的解决方法。但是会欢迎一种不需要拆分每个日期的更好方法。
valdts = dfmap.loc[row, 'valdata'].split(', ')
print(valdts)
>>
['1/1/1990', '6/6/1990', '7/4/1776']
for dt in valdts:
ldt = dt.split('/')
valdt = datetime(int(ldt[2]), int(ldt[1]), int(ldt[0]))
ldates.append(valdt)
print(ldt)
>>
注意1:由于我导入日期时间的方式,datetime.datetime 对我不起作用。在此处查看出色的解释。
注意 2:将单个数字转换为 int 至关重要。没有其他东西对我有用。感谢@waitingkuo 在上面的同一链接中提供的解决方案。
推荐阅读
- excel - 在条件格式中使用特定的单元格颜色
- javascript - 使用 .get() 检索服务器上文件夹中所有文件名的数组
- swift - swift中的最大连续数
- python - Flower 中的高级任务格式化(Celery 监控)
- java - Firebase firestore 抛出空对象引用
- node.js - 如何通过 GraphQL 将响应标头转发给客户端
- python - 矩阵,怎么解决?
- python - 带有谓词的 pyhon min 函数
- logstash - Logstash :从日志中过滤错误消息
- azure-devops - 如何在 Azure DevOps 中读取发布管道中工件的目录路径?