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
相关产品推荐
相关产品推荐

