在Python3中以特定值分割日期列表

时间:2018-12-04 07:01:47

标签: python-3.x

我正在尝试在特定日期分割日期列表(格式为YYYY-MM-DD) ,并接受所有包含和之后的条目。

desired_date = '2018-11-01'
my_list =  ['2018-10-29', '2018-10-30', '2018-10-31', '2018-11-01', '2018-11-02', '2018-11-03', '2018-11-04']

我想做的是拆分出现'2018-11-01'的列表,并像这样获得一个缩短的列表:

shortened_list = ['2018-11-01', '2018-11-02', '2018-11-03', '2018-11-04']

不胜感激任何指点!谢谢!

3 个答案:

答案 0 :(得分:4)

您可以使用index()获得所需元素的索引,然后只需使用列表切片

desired_date = '2018-11-01'
my_list =  ['2018-10-29', '2018-10-30', '2018-10-31', '2018-11-01', '2018-11-02', '2018-11-03', '2018-11-04']

print(my_list[my_list.index(desired_date):])

输出:

C:\Users\Desktop>py x.py
['2018-11-01', '2018-11-02', '2018-11-03', '2018-11-04']

答案 1 :(得分:0)

我想您必须首先将数组中的元素解析为日期格式,然后在数组上循环以提取所需的日期范围。 与上一个答案相同

day_dt = '2018-11-01'
my_list =  ['2018-10-29', '2018-10-30', '2018-10-31', '2018-11-01', '2018-11-02', '2018-11-03', '2018-11-04']
dt_list = [x for x in my_list if x >= day_dt]
print(dt_list)

如果您需要使用日期进行过滤

datetime.strptime(my_list[i], '%Y-%m-%d')

答案 2 :(得分:0)

desired_date不在my_list中的另一种改进:

desired_date = '2018-11-01'
my_list =  ['2018-10-29', '2018-10-30', '2018-10-31', '2018-11-01', '2018-11-02', '2018-11-03', '2018-11-04']
shortened_list = [x for x in my_list if x >= desired_date]
print(shortened_list)

输出

['2018-11-01', '2018-11-02', '2018-11-03', '2018-11-04']

我在答案中发布是因为注释字段不允许编写正确的代码