前提・実現したいこと
Pythonで青空文庫から取得したデータを処理し、台詞のみを抜きだして別ファイルとして保存したいです。
ディレクトリ内にダウンロードした小説のテキストデータをまとめているので、それらに対し処理を行いたいと考えています。
ディレクトリ内の1ファイルを指定して実行すると処理できるのですが、下のソースコードで実行するとエラーを吐いてしまいます。
発生している問題・エラーメッセージ
IndexError Traceback (most recent call last) <ipython-input-20-d219f77dfcf1> in <module>() 24 #text = text.replace('テキスト','text') 25 # ヘッダ部分の除去 ---> 26 text = re.split('\-{5,}',text)[2] 27 # フッタ部分の除去 28 text = re.split('底本:',text)[0] IndexError: list index out of range
該当のソースコード
Python
1import os 2import codecs 3import re 4 5data_dir_path = u"./aozorabunko_sinjisinkana" 6file_list = os.listdir(r'./aozorabunko_sinjisinkana') 7 8for file_name in file_list: 9 root, ext = os.path.splitext(file_name) 10 if ext == u'.txt': 11 abs_name = data_dir_path + '/' + file_name 12 f = codecs.open(abs_name, "r", "shift_jisx0213") 13 text = f.read() 14 f.close() 15 16# ヘッダ部分の除去 17text = re.split('\-{5,}',text)[2] 18# フッタ部分の除去 19text = re.split('底本:',text)[0] 20# | の除去 21text = text.replace('|', '') 22# ルビの削除 23text = re.sub('《.+?》', '', text) 24# 入力注の削除 25text = re.sub('[#.+?]', '',text) 26# 全角スペースの除去 27text = re.sub(r'\u3000', '', text) 28# |(全角)の除去 29text = text.replace('|', '') 30# 台詞の連続をTabに変換 31text = re.sub('」\r\n「', '\t', text) 32# 空行の削除 33text = re.sub('\n\n', '\n', text) 34text = re.sub('\r', '', text) 35#「」で囲まれた文のみ抽出 36text = re.findall('「.*?」', text) 37 38# リストを展開・改行区切りで出力(ディレクトリ内一括処理) 39list = text 40s = '\n'.join(list) 41f_out = codecs.open(abs_name + 'out.txt', "w", "shift_jisx0213") 42print(s, file=f_out) 43f_out.close() 44
環境
Python 3.6.6
Anaconda 4.5.11
Windows 8.1
Jupyter notebook 5.6.0
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/09/20 17:34
2018/09/20 17:38