【发布时间】:2021-09-09 00:38:15
【问题描述】:
我正在制作动画日历来标记节目播出的日期。我的代码运行良好,但问题是我无法通过搜索所有日期找到动漫的名称。
我认为有两个问题:
- 要么我在选项 2 中的搜索代码错误,要么
- today_date = 25-6-2021 而不是 25-06-2021
我的动漫数据.....
"Anime","Episodes_Dates"
"Naruto","['30-06-2021', '08-07-2000', '15-07-2000', '22-07-2000', '29-07-2000', '05-08-2000', '12-08-2000', '19-08-2000', '26-08-2000', '02-09-2000', '09-09-2000', '16-09-2000', '23-09-2000', '30-09-2000', '07-10-2000', '14-10-2000', '21-10-2000', '28-10-2000', '04-11-2000', '11-11-2000', '18-11-2000', '25-11-2000', '02-12-2000', '09-12-2000', '16-12-2000', '23-12-2000']"
"Bleach","['26-04-2005', '03-05-2005', '30-06-2021', '17-05-2005', '24-05-2005', '31-05-2005', '07-06-2005', '14-06-2005', '21-06-2005', '28-06-2005', '05-07-2005', '12-07-2005', '19-07-2005', '26-07-2005', '02-08-2005', '09-08-2005', '16-08-2005', '23-08-2005', '30-08-2005', '06-09-2005', '13-09-2005', '20-09-2005', '27-09-2005', '04-10-2005', '11-10-2005', '18-10-2005', '25-10-2005', '01-11-2005', '08-11-2005', '15-11-2005', '22-11-2005', '29-11-2005', '06-12-2005', '20-12-2005']"
"Tokyo Revengers","['30-06-2021', '19-05-2021', '26-05-2021', '02-06-2021', '09-06-2021', '16-06-2021', '25-06-2021', '30-06-2021', '07-07-2021', '14-07-2021', '21-07-2021', '28-07-2021', '04-08-2021', '11-08-2021', '18-08-2021', '25-08-2021', '01-09-2021', '08-09-2021', '15-09-2021', '22-09-2021', '29-09-2021', '06-10-2021', '13-10-2021', '20-10-2021', '27-10-2021', '03-11-2021', '10-11-2021', '17-11-2021', '24-11-2021', '01-12-2021', '08-12-2021', '15-12-2021', '22-12-2021']"
"Tomb Raider","['30-06-2021', '02-07-2021', '09-07-2021', '16-07-2021', '23-07-2021', '30-07-2021', '06-08-2021', '13-08-2021', '20-08-2021', '27-08-2021', '03-09-2021', '10-09-2021', '17-09-2021', '24-09-2021', '01-10-2021', '08-10-2021', '15-10-2021', '22-10-2021', '29-10-2021', '05-11-2021', '12-11-2021', '19-11-2021', '26-11-2021', '03-12-2021', '10-12-2021', '17-12-2021', '24-12-2021']"
"Link Click","['04-11-2021', '11-11-2021', '18-11-2021', '25-11-2021', '02-12-2021', '09-12-2021', '16-12-2021', '23-12-2021', '30-12-2021']"
"Vivy Fluorite's Song","['21-04-2021', '28-04-2021', '05-05-2021', '12-05-2021', '19-05-2021', '26-05-2021', '02-06-2021', '09-06-2021', '16-06-2021', '23-06-2021', '30-06-2021', '07-07-2021', '14-07-2021', '21-07-2021', '28-07-2021', '04-08-2021', '11-08-2021', '18-08-2021', '25-08-2021', '01-09-2021', '08-09-2021', '15-09-2021', '22-09-2021', '29-09-2021', '06-10-2021', '13-10-2021', '20-10-2021', '27-10-2021', '03-11-2021', '10-11-2021', '17-11-2021', '24-11-2021', '01-12-2021', '08-12-2021', '15-12-2021', '22-12-2021', '29-12-2021']"
"Haikyuu","['26-06-2018', '03-07-2018', '10-07-2018', '17-07-2018', '24-07-2018', '31-07-2018', '07-08-2018', '14-08-2018', '21-08-2018', '28-08-2018', '04-09-2018', '11-09-2018', '18-09-2018', '25-09-2018', '02-10-2018', '09-10-2018', '16-10-2018', '23-10-2018', '30-10-2018', '06-11-2018', '13-11-2018', '20-11-2018', '27-11-2018', '04-12-2018', '11-12-2018', '18-12-2018', '25-12-2018']"
"Black Clover","['28-02-2016', '06-03-2016', '13-03-2016', '20-03-2016', '27-03-2016', '03-04-2016', '10-04-2016', '17-04-2016', '24-04-2016', '01-05-2016', '08-05-2016', '15-05-2016', '22-05-2016', '29-05-2016', '05-06-2016', '12-06-2016', '19-06-2016', '26-06-2016', '03-07-2016', '10-07-2016', '17-07-2016', '24-07-2016', '31-07-2016', '07-08-2016', '14-08-2016', '21-08-2016', '28-08-2016', '04-09-2016', '11-09-2016', '18-09-2016', '25-09-2016', '02-10-2016', '09-10-2016', '16-10-2016', '23-10-2016', '30-10-2016', '06-11-2016', '13-11-2016', '20-11-2016', '27-11-2016', '04-12-2016', '11-12-2016', '18-12-2016', '25-12-2016']"
我的代码
import csv
import datetime
from datetime import timedelta, date
import pandas as pd
print(f"(1) Add Anime\n(2) Today Shedule\n(3) Remove an Anime")
choice = input("1,2 or 3:-")
dt = datetime.datetime.now()
d = dt.day
m = dt.month
y = dt.year
today_date = f"{d}-{m}-{y}"
dates =[]
def date_shedule(date1, date2, list):
def daterange(date1, date2):
for n in range(0,int((date2 - date1).days)+1,7):
yield date1 + timedelta(n)
for dt in daterange(date1, date2):
list.append(str(dt.strftime("%d-%m-%Y")))
return list
with open('Anime_Data.csv', 'a') as f:
w = csv.writer(f, quoting=csv.QUOTE_ALL)
if choice.strip() == "1":
#new anime added
Anime = input("Anime Name:- ")
Date_Airing_y = int(input("Date of Airing(yyyy):- "))
Date_Airing_m = int(input("Date of Airing(mm):- "))
Date_Airing_d = int(input("Date of Airing(dd):- "))
sum = m +6
if sum > 12:
end_m = sum - 12
end_dt = date(Date_Airing_y+1, end_m, d)
else:
end_dt = date(Date_Airing_y, m + 6, d)
Date = date(Date_Airing_y,Date_Airing_m,Date_Airing_d)
# w.writerow([Anime, Date_Airing])
w.writerow([Anime, date_shedule(Date,end_dt,dates)])
if choice.strip() == '2':
#todays shedule.......',')
with open("Anime_Data.csv", "r") as f:
reader = csv.reader(f)
for row in reader:
for dt in row:
if dt == today_date:
print('yes')
else:
print(today_date)
我希望结果如下:
如果我在 Anime_Data.csv 中搜索 today_date,它将给我所有将在 today_date 播出的动漫。
如果有一些不必要的代码,请告诉我,我会努力改进。
【问题讨论】:
-
听起来你已经知道日期格式的问题了。在今天的日期中,您使用字符串对其进行格式化,但稍后在您的代码中使用 strftime 格式化。我建议与 stftime 保持一致,因此请尝试
datetime.datetime.now().strftime("%d-%m-%Y")。由于我还没有运行代码来测试,所以将此作为推荐而不是答案。 -
还有xkcd.com/1179 ;)
-
@Chet 日期时间问题已解决,但我的选择 == '2' 代码仍然无法正常工作,我仍然面临解决这个问题...