本ブログの「英語・外国語」カテゴリで毎週、1週間分のBBC NEWSをまとめた記事を作成している。
毎日、記事を見つけExcelファイルに書き足しながら記録している。
毎回フォーマットがほぼ一定であるので、Excelファイルから自動的に記事ファイルを作成するスクリプトをPythonで書いた。
なお、Excelファイルの内容は次の画像で示した。
Pythonスクリプト
# 必要モジュールの読み込みとExcelファイルの読み込み import openpyxl import datetime wb = openpyxl.load_workbook("C:/Users/Public/Workspace/Essays/supplements_long/English_news.xlsx") ws = wb["Sheet1"]
## どの日から始まる一週間を記事にするかを入力してもらって、必要な情報を計算する start_str = input("Write start date in this format. YYYYMMDD\n") start_datetime = datetime.datetime.strptime(start_str, "%Y%m%d") start_date = datetime.date(start_datetime.year, start_datetime.month, start_datetime.day) the_oldest_datetime = ws.cell(row=2, column=1).value difference = start_datetime - the_oldest_datetime start_row = difference.days + 2
## 記事のパーツを作成する関数の定義 def one_day(i): output = "## " + (start_date + datetime.timedelta(days=i)).strftime('%Y/%m/%d') + "\n\n" output += ws.cell(row=start_row+i, column=4).value + "\n\n" output += "[" + ws.cell(row=start_row+i, column=5).value + ":embed:cite]" + "\n\n" if ws.cell(row=start_row+i, column=9).value: output += ws.cell(row=start_row+i, column=9).value + "\n\n" return output def make_one_day_word_list(i): english = ws.cell(row=start_row+i, column=7).value japanese = ws.cell(row=start_row+i, column=8).value output = "|" + english + "|" + japanese + "|" + "\n" return output
# 記事の自動生成 base_str = "この1週間のBBC NEWSまとめ(" + start_date.strftime('%Y/%m/%d') + " - " + (start_date + datetime.timedelta(days=6)).strftime('%Y/%m/%d') + ")\n\n" base_str += "この1週間のBBC NEWSをまとめて紹介します。\n\n" for i in range(7): base_str += one_day(i) base_str += "## 雑感\n\n" base_str += "## 単語\n\n" + "|keyword|meaning|\n" + "|---|---|\n" for i in range(7): base_str += make_one_day_word_list(i) print(base_str)
# 記事をmdファイルとして保存 tdate = datetime.date.today().strftime("%Y%m%d") path = "C:/Users/Public/Workspace/Essays/Essays/" + tdate + "_bbc_news_from_" + start_str + ".md" with open(path, mode='w', encoding='utf-8') as f: f.write(base_str)