

パイソン初心者で、海外の大学にて入門コースに通いはじめました。  
全くの個人的な状況なのですが、以下課題の解決策が分からないまま秋休みに入り途方に暮れています...  
課題解決に役立つアドバイス含め、頂けますと幸いです。

**【概要】**  
①txtファイル内の各章を個別に所定のファイル名と連番の形式でtxt.ファイルにて切り出す  
②上記①の工程に加え、各章のタイトル名をファイル名に反映させる

**【条件】**  
・ハードコードせずにソースコードを組むこと  
・ファイル名は「Dracula-Chapter-#(章の番号).txt」とする。  
例）1章目であれば「Dracula-Chapter-1.txt」、2章目なら「「Dracula-Chapter-2.txt」

**【実現したいこと詳細】**  
①各章を個別に連番のtxt.ファイルにて切り出す  
・各章とは各ファイルの“CHAPTER...●●(章の番号)” で始まる行から、その章の最終行までを対象とする  
例）1章目であれば「・・・sky.」で終わる  
※最終章は「〜THE END」までを対象とする

②上記①の工程に加え、各章のタイトルをファイル名に反映させる  
・「dracula.txt」の冒頭目次にある各章のタイトルを参照し、上記②のファイル名に反映させる。  
例）1章目であれば「Dracula-Chapter-1_Jonathan_Harker's_Journal.txt」、5章目なら「「Dracula-
Chapter-2_Letters--Lucy_and_Mina.txt」  
※txtファイル内のタイトル名に使われているスペースはファイル名反映時はアンダーバーに変換すること(_)

**【課題に使用しているファイル】**  
[こちらに格納の「dracula.txt」ファイル](https://drive.google.com/drive/folders/1AehNVwjKWhdkF80LDDprRjSPipPb3A3M?usp=sharing)  
※英文の電子書籍の元ファイルです。

**【備考】**  
テキストソース  
[Project
Gutenberg](https://drive.google.com/drive/folders/1AehNVwjKWhdkF80LDDprRjSPipPb3A3M?usp=sharing)

**【編集中のコード】**  
各章のパターンとして「CHAPTER...●●」で始まり、各章の終わりは最終章を除き5行文の改行コードがあります。  
編集中のコードは改行コードを参照しての切り分けを想定した途中経過となっています。  
章間のスペースを元に章を区切るところまではできていると思うのですが、  
それを27章分繰り返すこと、ファイル名を指定するところで行き詰っています...

[code]

    fileio = open('dracula.txt','r')
    dracula = fileio.read()
    outfile = open('Dracula-Chapter-1.txt', 'w')
    
    list_of_drac = dracula.split('\n\n\n\n\n')
    chapters = list_of_drac[4-33]
    
    print(chapters) #print(chapters,file= outfile)<Use commennted out ver. when   printing>
    
[/code]

# in_file.close()  
# outfile.close()


CC BY-SA 4.0
2018-10-18T14:47:30.083
49423
2018-10-18T22:42:12.703
30577
question
python python3
for loopを使った章毎のtxt.ファイルの書き出し及びフィル名の設定について(Python)


解決策の一つの方法でコードを書いておきます。宿題なのでタイトルを取得するところは自己解決できるように残しておきます。

[code]

    with open('dracula.txt', 'r') as f:
        dracula = f.read()
    list_of_drac = dracula.split('\n\n\n\n\n')
    n = 0
    for chapter in list_of_drac:
        if chapter.startswith('CHAPTER'):
            # 3行目にあるタイトルを取得
            n += 1
            filename = 'Dracula-Chapter-' + str(n) + '.txt'
            with open(filename, 'w') as f:
                f.write(chapter)
    
[/code]


CC BY-SA 4.0
2018-10-18T22:42:12.703
49427
2018-10-18T22:42:12.703
15171
49423
answer