2017-01-23 29 views
0

私はPythonの初心者です。私はPythonでコードを記述してテキストファイルを読み込み、各単語を分割してソートして印刷する必要があります。 -リスト内の文字列をPythonの単語に分割する

[「公正日に発生し、嫉妬月を殺す」、「しかし、向こうの窓破損によるソフト何軽い」

fname = raw_input("Enter file name: ") 
fh = open(fname) 
lst = list() 
words = list() 


for line in fh:  

    line = line.strip() 
    line.split() 
    lst.append(line) 

lst.sort() 
print lst 

私の出力です:ここで

は、私が書いたコードです、「これは東で、ジュリエットは太陽である」、「すでに病気とgrienterコードherewと淡いで誰が、 「が」、「あそこ」]

しかし、WH私はそれが

Listオブジェクトが何も属性が助けてください

を分割していないと言ってlst.split()を分割しようとする専用!

for line in fh:  
    line = line.strip() 
    lst.extend(line.split()) 

答えて

2

あなたはで新しいリストをextendすべきは、付加した後の文字列を分割しようとするのではなく、行を分割さ。戻り値でsthを行う必要があります。

for line in fh:  
    # line.split() # expression has has no effect 
    line = line.split() # statement does 
    # lst += line # shortcut for loop underneath 
    for token in line: 
     lst = lst + [token] 
     lst += [token] 

上記は、ネストされたループを使用しappendextendとを回避する解決策です。

print sorted(word for line in fh for word in line.strip().split()) 
+0

ライン分割およびソートすることによって、全体のラインは、ネストされたジェネレータ式では、しかし、非常に簡潔に行うことができますこの問題では、append()関数を使用する必要があります。 – Dmytro

0

問題がsplit()ある魔法listに分割された文字列を変化させません。

+0

私はextend()関数をまだ扱っていませんので、使用することはできません。インストラクターのコメントを読んで、この問題にネストループを使用する必要があると思います。 – Dmytro

0

あなたが行うことができます:

fname = raw_input("Enter file name: ") 
fh = open(fname, "r") 
lines = list() 
words = list() 
for line in fh:  
    # get an array of words for this line 
    words = line.split() 
    for w in words: 
     lines.append(w) 

lines.sort() 
print lines 

をDUPを避けるために:

no_dups_list = list() 
for w in lines: 
    if w not in no_dups_list: 
     no_dups_list.append(w) 
+0

まだ参加していません。ここで使うことができるのはsort()とappend()です。 – Dmytro

+0

はソートとアペンドだけを使用するように編集されています;)これが役立つことを願っています。 – al27091

+0

返事ありがとうございます、しかし、私はまだ間違った結果を取得します。私は持っている - ['起きて、うらやましい公正殺す月太陽'、 'しかし、どのウィンドウyonder'を介して柔らかい光を壊す、 'それはジュリエットと東は太陽です'、 'すでに悲しみは薄い病気です' ] '012' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' 「薄い」、「薄い」、「柔らかい」、「太陽」、「the」、「through」、「what」、 、 'window'、 'with'、 'yonder'] – Dmytro

関連する問題