2015-12-30 73 views
-1
try: 
    fileName = 'C:\pro.txt' 
    textF = open(fileName, 'r') 
    lines = textF.read() 
except IOError: 
    print("Not found") 

paragraph = lines.split('\n\n') 
paragraph[:] = (words for words in paragraph if words != '\t') 

for w in paragraph: 
    if w.isupper() == True: 
     paragraphUpper = [] 
     paragraphUpper.extend([w]) 
     print(paragraphUpper[0]) 

嘿大家,所以我有一個關於從文本文件中添加幾個元素到列表的問題。在這段代碼中,我設法找到所有大寫的行,但是當我嘗試將它們作爲新元素逐一添加到我的列表中時,它不會發生。它將整體添加爲數組的第一個元素。我如何設法將這些行添加爲新元素?從文本文件中添加幾個元素到列表

我已經嘗試拆分w分裂。我已經嘗試將段落分割成一行而不是兩行,但它仍然只向列表中添加一個元素。

這裏是文本文件的一個片段:

這地

有迷人的人關心的一個廣闊的領域,躺在纔剛剛 外面我們的門,迄今爲止還沒有探索過。它是動物智能領域的 。

所有種類的興趣附着到世界 野生動物研究的,有沒有說超過他們的頭腦, 他們的道德和行爲的研究,他們爲自己的 心理過程的結果進行。

在這些頁面中,術語「動物」並沒有用在其最常見的和最受限制的意義上。它不僅適用於四足動物, ,而且適用於所有的脊椎動物形式 - 哺乳動物,鳥類,爬行動物,兩棲動物和魚類。

II

野生動物氣質&個體性

我想在這裏做的就是,找到大寫線,並把它們 陣列中的全部。然後,使用索引方法,我會通過比較我創建的這個數組的這些 元素的索引來找到每個部分的第一個 和最後一段。

+3

我們能看到這個文本文件的一個片段嗎? – heinst

+1

另外,使用'textF.readlines()'而不是'textF.read()' – heinst

+0

我會做一些編輯。 – yechta

回答

0

你可以很容易地使用一個列表解析來解決這個問題。如果切換到readlines(),則paragraph[:] = ...行是無用的。這將滿足您的需求:

try: 
    fileName = 'C:\pro.txt' 
    textF = open(fileName, 'r') 
    paragraph = textF.readlines() 
except IOError: 
    print("Not found") 

paragraphUpper = [w.strip() for w in paragraph if w.isupper()] 
print paragraphUpper 
+0

這絕對適合我的需求!謝謝! – yechta

1

正如在評論中提到的,使用f.readlines();將文件分割成行列表。

,我們在您的代碼不少其他奇怪的事情:

  • 沒有必要爲列表理解做paragraph[:];只需重新分配變量paragraph = ...

  • 不要True相比,只是做if w.isupper():

  • 您重新定義paragraphUpper作爲一個新的空單通過你的每一次循環中;所以它只會包含一個元素。您需要在for語句前創建一次。

  • 不要將單個項目包裝在列表中做paragraphUpper.extend([w]),只需要做paragraphUpper.append(w)

  • 使用一致的縮進;前幾行有4個空格的縮進,在最後的循環剛纔1. Python標準的縮進被4.

0

爲了得到大寫線,使用:

try: 
    fileName = 'C:\pro.txt' 
    textF = open(fileName,'r') 
    lines = textF.readlines() 
    except IOError: 
    print("Not found") 
UpperLines = [] 
for line in lines: 
    if line.isupper(): 
     UpperLines.append(line) 
     print(line)