2015-04-12 120 views
0

我想分割一個更大的文檔,該文檔被特定的短語分隔成多個部分,然後分別保存這些部分。 (名單是目標)使用Python中以前未知數量的元素填充一個空列表

我的問題是,當我從一個空列表開始,我不知道有多少元素在那裏提前。也不能在它創建佔位符元素,因爲我必須索引再次,我認爲(再一次給我超出範圍的錯誤)

f = open(PATENTS, 'r') 
text =f.read() 
counter=0 
textblock=[] 
textblocklist=[] 
stext= text.splitlines() 

for line in stext: 
    if line !='<?xml version="1.0" encoding="UTF-8"?>': 

     textblocklist.append(line) 

    else: 
     counter+=1 
     textblock.append(textblocklist) 
     textblocklist=[] 

f.close() 

for n in textblock: 
    with open('file_{0}.dat'.format(n),'w') as ffile: 
     ffile.write(textblock[n]) 
     ffile.close() 

我根本不知道如何實現這一目標。我想要一個包含多個元素的列表(文本塊)(該數字在計數器中計算)。每個元素都是我猜想的行的列表,它們被if語句中的短語分開。誰能幫我?

+1

那麼會發生什麼?應該發生什麼呢?看起來你正在用引用相同的'textblocklist'來填充'textblock' - 在'textblock.append(...)'之後加上'textblocklist = []'來修復 – jonrsharpe

+0

可以提供樣本輸入和輸出嗎? –

+0

對不起,我甚至無法表達我想要的東西。我有一個大文件。我希望它在if語句中的短語出現時進行劃分。然後我希望它之間的謊言(文本行)保存在列表中。該列表有一些元素等於計數器 –

回答

0

您應該在找到分隔符時重置文本塊列表。

for line in stext: 
    if line !='<?xml version="1.0" encoding="UTF-8"?>': 
    textblocklist.append(line) 

    else: 
     counter+=1 
     textblock.append(textblocklist) 
     textblocklist=[] 
+0

我認爲這是「對於行」,然後.append(行)? –

+0

@StephanKetterer:如果你問我爲什麼從變量名中刪除複數,這是因爲在for循環中,變量首先等於line1,然後等於line2等:它始終是單行 –

+0

我相信這個問題似乎對你很有趣:)但我真的問這樣的啞巴初學者問題:( –

相關問題