2017-04-24 11 views
1

ファイル内の文字列のインデックス位置を見つける関数を作成しようとしています。 これを行うために、ファイル内の各行にループを反復したいと思います。私はここで、私のコードは今のところ1、3、4ファイル内の繰り返し単語のインデックスを見つける

を印刷したいの引数として「HI」を置けば

hello 
hi 
hello 
hi 
hi 

:からなる 今ファイルがwords.txtと呼ばれ、私のコードです:

def line(word, filename): 
    f=open (filename, 'r') 
    for (i , line) in enumerate (f): 
     if word in line: 
      return i 

今のところ私のコードは動作しますが、複数の値の代わりに1が出力されます。 これは私の列挙関数と関係があると推測しています。 誰も私にこれを手伝ってもらえますか?

答えて

1

return値を入力すると、関数はすぐに終了します。 printステートメントにはこの効果がありません。 (あなたが本当に複数の値を返すようにしたいならば、あなたはリストに追加し、すべての行を反復処理した後にリストを返す試すことができます。)

0
def line(word, filename): 
    f = dict(list(enumerate(open(filename,'r')))) 
    for k in f: 
     if word in f[k]: 
      print (k) 
1

バージョンをリスト内包表記で:

def line(word, filename): 
    f = dict(list(enumerate(open(filename,'r')))) 
    return [k for k in f if word in f[k]] 
0

正確な単語(別の単語の中の単語の一部ではない)を見つける必要がある場合は、空白記号を使用して別の単語に分割し、単語を比較する必要があります。 'ファイル名.txt' の

import os 

def list_of_indexes(word, filename): 
    """ Return list of indexes with encounter of word in the line number """ 
    lst = [] 
    if not os.path.isfile(filename): # file doesn't exist 
     print('File does not exist') 
     return lst # return empty list 
    f = open(filename, 'r') # open file for reading 
    for (i, line) in enumerate(f): 
     if word in line: 
      lst.append(i) 
    f.close() # close file before exit 
    return lst 

print(list_of_indexes('hi', 'filename.txt')) 

:文字列内の単語の出現を確認するには

hello 
hi 
hello 
hi 
hi 
how are you 
fine 
Hitchhaker 
thanks 
anchithere 
ship 

は、それが返されます:

D:\>python list_of_indexes.py 
[1, 3, 4, 9, 10] 
関連する問題