2016-01-22 96 views
-1

我需要一些幫助,我目前正在做一個在線python課程,我似乎可以得到想要的結果來完成作業。Python(2.7 ....)列表問題

基本上,有我需要通過調用一個文本文檔「的raw_input」然後我用「的open()」函數,然後我有一個空的「名單()」

現在我跑了「對於我的.txt文檔中的每一行循環,我需要「r.strip()」所有的空格,這留下了一個4個live .txt文檔(.txt文件將位於ask的底部)現在我必須「將這些行分割成單詞。現在從我需要遍歷這些單詞和「.append()」每個單詞不是已經在列表中,然後「.sort()」,然後打印......希望在該階段,它看起來像所需的輸出。

只是爲了讓我感覺好一點,這是我第一次做任何形式的編碼。所以如果你能解釋哪裏出錯,爲什麼會出錯。 到目前爲止的代碼 - 目前產生一個錯誤

fname = raw_input("Enter file name: ") 
fh = open(fname) 
lst = list() 
for line in fh: 
    a = line.rstrip() 
    b = a.split() 
    for words in b: 
     if words not in lst: 
print lst 

.TXT文檔

But soft what light through yonder window breaks 
It is the east and Juliet is the sun 
Arise fair sun and kill the envious moon 
Who is already sick and pale with grief 

P.S - 即使世界在改變中的.txt一條線,因爲它的代碼不會在平地機的工作毫無意義。我試過了(得到想要的輸出,錯誤的代碼)

請幫助你,我們將不勝感激。

如果有任何需要的信息,請嘗試提供。

+2

「目前產生一個錯誤」。究竟是什麼?你能追溯到你的問題嗎? – Evert

+0

「」.append()「不在列表中的每個單詞」。 Python的['set'](https://docs.python.org/3/library/stdtypes.html#set-types-set-frozenset)可能會更方便。 – Evert

+0

你的'if'語句沒有代碼塊。另外,你沒有用'lst'做任何事 - 它只是一個空列表而且永遠不會改變。 –

回答

0

這將讀取文件,添加單詞列表,排序列表,然後打印它。

fname = raw_input("Enter file name: ") 
fh = open(fname) 
lst = list() 
for line in fh: 
    a = line.rstrip() 
    b = a.split() 
    for words in b: 
     if words not in lst: 
      lst.append(words) 
lst.sort() 
print lst 
fh.close() 

lst.append(element)將添加element到列表lst

lst.sort()將按字母順序排列列表lst

簽出該文檔=>Lists

+0

So換句話說,我得到了回溯,因爲我實際上沒有對列表本身做任何事情? –

0
l = list() 
with open('inp.txt') as inp: 
     for each_line in inp: 
       a = each_line.strip() 
       l += a.split() 

print set(l) 

與關鍵字,因爲它是一個更好的做法,因爲這會operation.and後關閉您的文件的唯一部分使用set(使用)只接受獨特的元素

0

您也可以使用set這就像一個列表,但沒有重複。這意味着你不必自己檢查重複項,因爲set會自動爲你自動完成。

如:

fname = raw_input("Enter file name: ") 
fh = open(fname) 
lst = set() 
for line in fh: 
    a = line.rstrip() 
    b = a.split() 
    for words in b: 
     lst.add(words) 
lst = list(lst) 
lst.sort() 
print lst 
0

嘗試列表解析生成列表,使用設置爲刪除重複項

lst = [words for line in open(fname) for words in line.rstrip().split()] 
lst = list(set(lst)) 
lst.sort() 
print lst