2015-10-28 23 views
0

我想知道如何創建一個函數,該文件將包含一些段落的文件拆分爲單獨的輸出文件,每個文件一個段落。每個文件應該命名爲fileN.txt,N是段落的編號。從文件中取文本的一部分並將其寫入Python中的單獨文件的函數

def para_split(input_file): 
     input_file = open(input_file, "r") 
     para_whole = input_file.readlines() 

     para1 = para_whole[0:17] 
     para2 = para_whole[17:34] 
     para3 = para_whole[34:51] 
     para4 = para_whole[51:68] 
     input_file.close() 
+1

只是FYI:有一個名爲'split'的unix工具,它完全符合你的需求。 – L3viathan

+0

@ L3viathan但在這種情況下我會如何使用它? – Cero

+0

您可以識別將段落與另一段落(例如點或空行)分開的情況,每當發生這種情況時計數並在該計數達到特定值時寫入不同文件。 – Kamejoin

回答

0

例如,如果你的文件是這樣的:

... finishing this paragraph. 

Starting this paragraph... 

這意味着,每一個段落是從海誓山盟由空行分隔。所以,試試這個:

def para_split(input_file): 
    input_file = open(input_file, "r") 
    empty_lines = 0 
    amount_of_files = 5 
    files = [] 

    for i in range(amount_of_files): 
     output_file = open('file'+str(i)+'.txt','w') 
     files.append(output_file) 

    for line in input_file: 
     if empty_lines < 10: 
      files[0].write(line) 
     elif 10 <= empty_lines < 15: 
      files[1].write(line) 
     . 
     . 
     . 
     elif 50 <= empty_lines < 60: 
      files[4].write(line) 

     if line == '\n': 
      empty_lines += 1 

    for file in files: 
     file.close() 

檢查是否有效,我不能在這臺計算機上做到這一點。

+0

真棒,一個問題我如何使輸出爲「file0.txt」 – Cero

+0

隨着第一個「for」迭代。它根據** i **的值給出每個文件的名稱。 – Kamejoin

+0

我將如何獲得文件的編號從1開始,並在4結束。您的幫助很大。 – Cero

相關問題