如何将Python日期范围生成的结果存储到列表变量中
解决方法:将日期范围存储到列表变量中
嘿,这个需求很容易实现,咱们只需要调整循环里的逻辑,同时先修正原代码里的几个小问题,确保功能正常:
首先,先指出原代码里的两个明显问题:
- 导入语句格式错误:
import datetime import re import pymongo应该拆分成单独的导入行 - 多余的无效代码:
d = collection.find_one({})和d1 = collection.find_one({})这两行会覆盖你之前从用户输入获取的日期值,完全没必要,必须删掉
接下来,实现将日期存入列表的核心修改:
- 初始化一个空列表来存储日期
- 在
daterange循环中,把每个格式化后的日期添加到列表里,而不是直接打印 - 循环结束后,你就可以使用这个列表做后续操作了
修改后的完整代码如下:
import datetime import re import pymongo from datetime import timedelta, date def daterange(d, d1): for n in range(int ((d1 - d).days)): yield d + timedelta(n) # 连接数据库 uri = "mongodb://127.0.0.1:27017" client = pymongo.MongoClient(uri) database = client['db'] collection = database['currency'] # 获取用户输入的日期 d = input('Insert beginning date (yyyy-mm-dd): ') d1 = input('Insert end date (yyyy-mm-dd): ') # 从数据库查询对应日期的记录 item = collection.find_one({"date" : d}) item1 = collection.find_one({"date" : d1}) # 将数据库返回的日期字符串转为datetime对象 dataObject = datetime.datetime.strptime(item['date'], "%Y-%m-%d") dataObject1 = datetime.datetime.strptime(item1['date'], "%Y-%m-%d") # 初始化空列表存储日期 date_list = [] # 遍历日期范围并添加到列表 for single_date in daterange(dataObject, dataObject1): formatted_date = single_date.strftime("%Y-%m-%d") date_list.append(formatted_date) # 如果需要同时打印日期,保留这行即可 print(formatted_date) # 现在可以使用date_list变量了,比如打印整个列表查看结果 print("存储的日期列表:", date_list)
当你输入起始日期2018-05-07、结束日期2018-05-11时,date_list的内容会是:
['2018-05-07', '2018-05-08', '2018-05-09', '2018-05-10']
这样你就可以把这个列表用于后续的任何操作啦~
内容的提问来源于stack exchange,提问作者Filipe Varandas
相关产品推荐
相关产品推荐

