質問: out_wb.save('output.xlsx')
回答: 質問欄にコードを貼る方法について コードを貼るときは、コードブロックで囲むようにしてください。 そうしないとインデントが崩れてしまいます。 質問欄はあとからでも編集できます。 !イメージ説明 ファイル名から日付の抽出 文字列から一部分を抽出する場合は「正規表現を作成する」問題に帰着します。 正規表現についてわからない場合は便利なので、勉強してみるとよいかと思います。 サルにもわかる正規表現入門 以下に質問欄にあるファイル名から正規表現で年月日を抽出して、文字列で返すサンプルコードを貼ります。 ``` import re def get_title(filename): # 「テキスト日報20140715」のパターンを抽出 matches = re.match(r'^.+日報(\d{4})(\d{2})(\d{2})\.xlxs$', filename) if matches: year, month, date = matches.groups() return '{:0>4}/{:0>2}/{:0>2}'.format(year, month, date) # 「2017.6.6テキスト日報」のパターンを抽出 matches = re.match(r'^(\d{4})\.(\d{1,})\.(\d{1,})[^\d].+日報\.xlxs$', filename) if matches: year, month, date = matches.groups() return '{:0>4}/{:0>2}/{:0>2}'.format(year, month, date) raise ValueError('Failed to parse specified string.') # テスト (この部分はテスト用なのでコピペしなくていいです。)( assert get_title('2017.6.6テキスト日報.xlxs') == '2017/06/06' assert get_title('2017.09.12テキスト日報.xlxs') == '2017/09/12' assert get_title('2017.06.06テキスト日報.xlxs') == '2017/06/06' assert get_title('テキスト日報20140715.xlxs') == '2014/07/15' ``` 以下の部分を変更して、使ってみてください。 変更前 ``` matches = re.search(r'日報(\d{1,2})\.(\d{1,2})', os.path.basename(path)) month, date = matches.groups() title = '{}/{}'.format(month, date) ``` 変更後 ``` title = get_title(os.path.basename(path)) ```