【Pythonノート】曜日指定年のすべての日付を取得

18952 ワード

目次
  • 質問の説明:指定した年の曜日のすべての日付
  • を取得します.
  • 1. 大まかな考え方
  • 2. ソース
  • 2.1すべての日付関数getAllDayDate()
  • を取得
  • 2.2指定週数のすべての日付関数getdaydate()
  • を取得
  • 2.3 csvファイルとtxtファイルを書き込む関数writeintocsv()とwriteintotxt()
  • 3. その他
  • 質問の説明:指定した曜日のすべての日付を取得します.
  • 新米作品、新学python、通りすがりの大物に意見をあげてほしいです.ありがとうございます.
  • 実装機能:年yearを指定し、曜日weekを指定し、2018年のすべての月曜日の日付を取得するなど、weekのyear内のすべての日付を取得します.
  • 更新:日付:2019/06/04、バージョン:version 1.0

  • 1.大まかな考え方
    Step 1:指定した年のすべての日付を取得し、2 Dリストを返します.Step 2:Step 1で返された2 Dリストから、指定した曜日の日付を絞り出し、リストを返す.Step 3:ふるいにかけた日付をファイルに書き込む.
    2.ソースコード
    import calendar
    import datetime
    import csv
    
    def getAllDayList(year):
        '''           ,        '''
        cal = calendar.Calendar()
        alldaylist = []
        for month in list(range(1,13)):
            listday = []
    		#  calendar  itermonthdays()  ,       ,         
            for day in cal.itermonthdays(year,month):
    			#             0
                if day != 0:
                    listday.append(day)
            alldaylist.append(listday)
        return alldaylist
    
    def getdaydate(year,alldaylist,zj):
        '''           '''
        filterdate = []
        for month in list(range(1,13)):
            for day in alldaylist[month - 1]:
                date = datetime.date(year,month,day)
    			#  datetime  isoweekday()  ,          
                if date.isoweekday() == zj:
                    tmpstr = str(date.year) + "," + str(date.month) + "," + str(date.day)
                    filterdate.append(tmpstr)
        return filterdate
    
    def writeintocsv(filterdate):
        '''        csv  '''
        tmp = []
        with open("HuoQuRiQi.csv",'w',newline='') as f:
            opw = csv.writer(f,delimiter=",")
            for i in filterdate:
                tmp = i.split(',')
                opw.writerow(tmp)
    
    def writeintotxt(filterdate):
        '''        txt  '''
        with open("HuoQuRiQi.txt",'w') as f:
            for i in filterdate:
                f.write(i+"
    "
    ) if __name__ == '__main__': year = int(input(" ( ):")) zhouji = int(input(" ( 1 7)?")) zjdate = getdaydate(year,getAllDayList(year),zhouji) writeintocsv(zjdate) writeintotxt(zjdate)

    2.1すべての日付関数getAllDayDate()の取得
    主な機能はdatetimeクラスを使用して指定した年のすべての日付を含むリストを生成することです.Datetimeクラスのitermonthdays()メソッドは、月の先頭と末尾の空白に「0」を埋め、フィルタリングする必要があります.
    def getAllDayList(year):
        '''           ,        '''
        cal = calendar.Calendar()
        alldaylist = []
        for month in list(range(1,13)):
            listday = []
    		#  calendar  itermonthdays()  ,       ,         
            for day in cal.itermonthdays(year,month):
    			#             0
                if day != 0:
                    listday.append(day)
            alldaylist.append(listday)
        return alldaylist
    

    2.2指定した曜日のすべての日付関数getdaydate()を取得する
    主な機能は、すべての日付から指定された曜日の日付をフィルタすることです.肝心なのはdatetimeクラスのisoweekday()メソッドです.
    def getdaydate(year,alldaylist,zj):
        '''           '''
        filterdate = []
        for month in list(range(1,13)):
            for day in alldaylist[month - 1]:
                date = datetime.date(year,month,day)
    			#  datetime  isoweekday()  ,          
                if date.isoweekday() == zj:
                    tmpstr = str(date.year) + "," + str(date.month) + "," + str(date.day)
                    filterdate.append(tmpstr)
        return filterdate
    

    2.3 csvファイルとtxtファイルを書き込む関数writeintocsv()とwriteintotxt()
    csvファイルを書くと、excelで表示しやすいです.
    def writeintocsv(filterdate):
        '''        csv  '''
        tmp = []
        with open("HuoQuRiQi.csv",'w',newline='') as f:
            opw = csv.writer(f,delimiter=",")
            for i in filterdate:
                tmp = i.split(',')
                opw.writerow(tmp)
    

    ついでにtxtファイルに書きましたが、しばらくは何の役に立つか分かりませんでした.
    def writeintotxt(filterdate):
        '''        txt  '''
        with open("HuoQuRiQi.txt",'w') as f:
            for i in filterdate:
                f.write(i+"
    "
    )

    3.その他
  • 英語のレベルは限られていて、Pythonの公式ドキュメントを何度も見て、理解できるクラスと方法をいくつか見つけただけで、通りかかった大人に他の便利な方法をあげたいと思っています.
  • は少し太っているような気がしますが、後でもっと簡潔な方法で更新することを学びます.