質問: text.split('。') print('文の数:', len(sentences)) sentences[:10] ```
回答: コメントを参考に全角と半角記号を使い分けることで、正しく処理されるのではないでしょうか。 > > 本文の最初と最後を区切り文字として split() メソッドで削除 > > > できてます。 > > 文字列の置換や正規表現を使用して不要な文字列や記号を削除 > > > サンプルコードを参考に、`text.replace`以下を見直してみてください。 > > 不要な文字列の削除が終わったら句点で文章を一文単位で分割 > > > できてます。 ※句点のみで区切ると見出しが次の本文に結合されます。 ### サンプルコード 実行する前に青空文庫からテキストファイル(ルビあり)のzipファイルをダウンロード、解凍してください。 `file_path`を解凍後に生成されたテキストファイルのパスに書き換えて実行してください。 ``` import re # todo file_pathを必要に応じて書き換えてください file_path = r'ningen_shikkaku.txt' with open(file_path, 'r', encoding='shift_jis') as f: original_text = f.read() first_sentence = '私は、その男の写真を三葉、見たことがある。' last_sentence = '神様みたいないい子でした' _, text = original_text.split(first_sentence) text, _ = text.split(last_sentence) text = first_sentence + text + last_sentence text = text.replace('|', '').replace(' ', '') text = re.sub('《\w+》', '', text) text = re.sub('[#[^]]+]', '', text) text = text.replace('\r', '').replace('\n', '') text = re.sub('[、「」?]', '', text) text = re.sub('(\w+)', '', text) text = re.sub('[\w+]', '', text) sentences = text.split('。') print('文の数:', len(sentences)) print(sentences[45:49]) ``` ### 出力内容 ``` 文の数: 1177 所謂死相というものにだってもっと何か表情なり印象なりがあるものだろうに人間のからだに駄馬の首でもくっつけたならこんな感じのものになるであろうかとにかくどこという事なく見る者をしてぞっとさせいやな気持にさせるのだ 私はこれまでこんな不思議な男の顔を見た事がやはりいちども無かった 第一の手記恥の多い生涯を送って来ました ``` ### 編集前の文(青空文庫の太宰治『人間失格』-テキストファイル(ルビあり)より抜粋して引用) ``` 所謂《いわゆる》「死相」というものにだって、もっと何か表情なり印象なりがあるものだろうに、人間のからだに駄馬の首でもくっつけたなら、こんな感じのものになるであろうか、とにかく、どこという事なく、見る者をして、ぞっとさせ、いやな気持にさせるのだ。私はこれまで、こんな不思議な男の顔を見た事が、やはり、いちども無かった。 [#改頁] [#3字下げ]第一の手記[#「第一の手記」は大見出し] 恥の多い生涯を送って来ました。 ```