2017-03-07 10 views
0

.txtの単語をlistに追加する関数を書きましたが、空行を無視することになっています。空の行に出力する方法は['',]です。テストならば、私はこのおかげリストに単語を追加する

+1

あなたが開いたファイルを閉じることをお勧めします。あるいは 'with'ブロックでファイルをオープンすると自動的に閉じます。 –

+0

私はまだそれに取り組んでいます、ちょうどこの部分で立ち往生しました – James

答えて

0

空の行をテストし、その場合は追加をスキップする必要があります。

def words(filename): 
    word = [] 
    file = open(filename) 
    for line in file: 
     line=line.strip() 
     if len(line): 
      word.append(line) 
    return word 
+0

これは今見つかってありがとうございます - 今編集しました – heroworkshop

+0

また、 'if line:'、 'len(line)'の方が簡単で効率的です。ファイルを閉じることについての私のコメントを見てください。 –

3

何シンプルについての問題を解決するにはどうすればよい

def words(filename): 
    word = [] 
    file = open(filename) 
    for line in file: 
     word.append(line.strip()) 
    return word 

def words(filename): 
    word = [] 
    file = open(filename) 
    for line in file: 
     if line.strip() != ' ': 
      word.append(line.strip()) 
    return word 

編集:私は.stripを忘れてしまった()のほかにライン した後、あなたはまた、あなたが単語のリストを取得しますが、行ごとにいくつかの単語を持っているしたい場合は、あなたがそれらを分割する必要があり、if line.strip(): ラストを使用することができます。 「'あなたの区切りをされると仮定すると:

def words(filename): 
     word = [] 
     file = open(filename) 
     for line in file: 
      if line.strip() != ' ': 
       word.extend(line.strip().split()) 
     return word 
+1

空白を含む行も空行であるとは思わないでしょうか? 1つの迷子文字とあなたはまだOPが苦情を言っていた空のエントリを取得します – heroworkshop

+0

@heroworkshopありがとう、私は私の答えを修正しました。また、文から単語を取得する場合は、「re」をインポートして正しい正規表現を見つける必要があるかもしれないことに注意してください(複雑すぎてはいけません) – Wli

1

あなたはそのようにこの問題を解決することができます

def words(filename): 
    word = [] 
    file = open(filename) 
    for line in file: 
     if not line.strip(): 
      word.append(line) 
    return word 

をあなたの問題はあなたがline.strip()を追加しているということですが、lineが実際に空の文字列の場合はどうなりますか?見る:

In [1]: line = '' 

In [2]: line.strip() 
Out[2]: '' 

''.strip()は空の文字列を返します。

+0

OPはストリップされた行を追加したいと思います。ライン。 –

+0

@ PM2Ringもしそうなら、私はOPが 'word.append(line.strip()'に変更できると信じています。 – Maroun

関連する問題