You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python如何将用户输入的完整日期作为单个元素存入列表?

问题原因

  • list() 函数的作用是遍历传入的可迭代对象,将每个元素单独存入列表。字符串属于可迭代对象,因此list(start_date)会把输入的日期字符串逐字符拆分,得到单字符组成的列表。
  • 你之前处理entities_list和views_list时用方括号生成列表,本质是把遍历split(', ')得到的多个元素存入列表;如果要把单个完整字符串作为唯一元素存入列表,直接用方括号包裹这个字符串即可。

修正方案

把日期输入部分的start_date = list(start_date)、end_date = list(end_date)分别替换为start_date = [start_date]、end_date = [end_date]即可。

修正后的完整代码

import datetime # 原代码漏了导入datetime模块,运行会报错,这里补上

def user_inputs():
    while True:
        try:
            entities_list = [int(x) for x in input("Entities for API Call:\n").split(', ')]
        except ValueError:
            print("---ERROR: MUST BE COMMA SEPERATED VALUES---")
            continue
        break
    while True:
        try:
            views_list = [int(x) for x in input("Views for API Call:\n").split(', ')]
        except ValueError:
            print("---ERROR: MUST BE COMMA SEPERATED VALUES---")
            continue
        break
    while True:
        try:
            start_date = input("Enter time in this format yyyy-mm-dd: ")
            # 格式校验
            datetime.datetime.strptime(start_date, "%Y-%m-%d")
            start_date = [start_date] # 直接包裹为单元素列表
        except ValueError:
            print("---ERROR: MUST BE YYYY-MM-DD FORMAT ---")
            continue
        break
    while True:
        try:
            end_date = input("Enter time in this format yyyy-mm-dd: ")
            datetime.datetime.strptime(end_date, "%Y-%m-%d")
            end_date = [end_date] # 直接包裹为单元素列表
        except ValueError:
            print("---ERROR: MUST BE YYYY-MM-DD FORMAT ---")
            continue
        break        
    return entities_list, views_list, start_date, end_date

user_inputs()

补充说明

原代码里校验日期格式时生成的time变量没有被使用,已经删掉,不影响功能。

内容的提问来源于stack exchange,提问作者William

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 14:09:04