2016-04-17 17 views
-1

Ich schreibe ein Programm zum Lesen von Text aus einer Datei in eine Liste, teilen Sie es in eine Liste von Wörtern mit der Split-Funktion. Und für jedes Wort muss ich es überprüfen, wenn es bereits in der Liste ist, wenn nicht, muss ich es mit der Append-Funktion zur Liste hinzufügen.Python Anhängen von Wörtern an eine Liste aus Datei

Die gewünschte Ausgabe ist:

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

Meine Ausgabe ist:

[['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']] 

Ich habe versucht, es zu sortieren und die doppelten eckigen Klammern "[[&]]" in dem Anfang entfernen und enden, aber ich kann das nicht tun. Und aus irgendeinem Grund scheint die Funktion sort() nicht zu funktionieren.

Bitte lassen Sie mich wissen, wo ich einen Fehler mache.

word_list = [] 
word_list = [open('romeo.txt').read().split()] 
for item in word_list: 
    if item in word_list: 
     continue 
    else: 
     word_list.append(item) 
word_list.sort() 
print word_list 
+0

sagen Als terrya sagt, Sie mit zwei separaten Listen arbeiten müssen, aber Ihr Code verwendet 'word_list' für die Eingabelisten und die Ausgabeliste und Sie erstellen eine Liste innerhalb einer Liste mit' [open ('romeo.txt'). read(). split()] '. Der effizienteste Weg, dies zu tun, ist ein 'set' zu verwenden, aber ich denke, du machst eine Hausaufgabe und du musst es nur mit Listen machen. Sie sollten auch lernen, '' 'zum Öffnen von Dateien zu verwenden. –

+0

die Anweisung "open ('rememo.txt) .read(). Split()" gibt eine Liste bereits zurück, also entferne die [] von der "[' open (' remeuro.txt) .read(). Split()] " – pitaside

Antwort

0

Verwenden Sie zwei separate Variablen. Auch str.split() gibt eine Liste, so dass keine Notwendigkeit zu setzen [] drum herum:

word_list = [] 
word_list2 = open('romeo.txt').read().split() 
for item in word_list2: 
    if item in word_list: 
     continue 
    else: 
     word_list.append(item) 
word_list.sort() 
print word_list 

Im Moment Sie if item in word_list: sind Kontrolle, die immer wahr sein wird, weil item von word_list ist. Machen Sie item aus einer anderen Liste iterieren.

+0

Danke für die Hilfe! Ich bin neu bei Python und das ist sehr hilfreich. – Chandra

+0

@Chandra Kein Problem! Achten Sie darauf, die Antwort zu akzeptieren! – TerryA

0

entfernen Klammern

word_list = open('romeo.txt').read().split() 
0

Split eine Liste zurück, so dass keine Notwendigkeit um die open...split eckige Klammern zu setzen. So entfernen Sie Duplikate verwenden, um einen Satz:

word_list = sorted(set(open('romeo.txt').read().split())) 
print word_list 
0

Wenn Reihenfolge keine Rolle spielt, ist es ein einzeiler

uniq_words = set(open('romeo.txt').read().split()) 

Iforder Angelegenheiten, dann

uniq_words = [] 
for word in open('romeo.txt').read().split(): 
    if word not in uniq_words: 
     uniq_words.append(word) 

Wenn Sie möchten, Sortieren, dann nehmen Sie den ersten Ansatz und verwenden Sie sorted().

0

Die Aussage open('remeo.txt).read().split() bereits eine Liste zurück, so dass die [] aus dem

[open('remeo.txt).read().split() ]

entfernen, wenn i

word = "Hello\nPeter" 
s_word = [word.split()] # print [['Hello', wPeter']] 
But 
s_word = word.split() # print ['Hello', wPeter'] 
Verwandte Themen