2016-10-11 8 views
0

レストランの名前のファイルがあり、そのファイルを検索して「イタリア語」のような特定の文字列を見つける必要があるとします。ファイルを検索して文字列を検索し、同じ文字列のレストラン数を表示すると、コードはどのように見えますか?Pythonでファイルを検索する

f = open("/home/ubuntu/ipynb/NYU_Notes/2-Introduction_to_Python/data/restaurant-names.txt", "r") 
content = f.read() 
f.close() 
lines = content.split("\n") 
with open("/home/ubuntu/ipynb/NYU_Notes/2-Introduction_to_Python/data/restaurant-names.txt") as f: 
     print ("There are", len(f.readlines()), "restaurants in the dataset") 
with open("/home/ubuntu/ipynb/NYU_Notes/2-Introduction_to_Python/data/restaurant-names.txt") as f: 
     searchlines = f.readlines() 
    for i, line in enumerate(searchlines): 
    if "GREEK" in line: 
     for l in searchlines[i:i+3]: print (l), 
     print 
+0

ファイルのフォーマットに関する情報はありますか? – BLang

+0

それは宿題のように見えます。 –

+0

@BLangファイルは1行に1つのレストラン名でフォーマットされており、その他のものは含まれていません – Normality

答えて

2

あなたはカウンターの辞書を使用してすべての単語をカウントして、特定の単語の検索を行うことができます:単語は、特定のレストランを二回登場している場合

from collections import Counter 
from string import punctuation 

f_name = "/home/ubuntu/ipynb/NYU_Notes/2-Introduction_to_Python/data/restaurant-names.txt" 


with open(f_name) as f: 
    # sum(1 for _ in f) -> counts lines 
    print ("There are", sum(1 for _ in f), "restaurants in the dataset") 
    # reset file pointer back to the start 
    f.seek(0) 
    # get count of how many times each word appears, at most once per line 
    cn = Counter(word.strip(punctuation).lower() for line in f for word in set(line.split())) 
    print(cn["italian"]) # no keyError if missing, will be 0 

我々はそうset(line.split())を使用し、私たちはそれを一度しか数えません。これは正確な一致を探します。fooなどの部分一致と照合している場合は、foobarに複数の単語を効率的に検索できるデータセットを作成する方が複雑になります。

あなたは本当にただ一つの単語をカウントしたい場合はあなたがする必要があるすべては、サブストリングが行に表示された回数合計使用している:あなたは完全一致が必要な場合は、あなたが必要となる

f_name = "/home/ubuntu/ipynb/NYU_Notes/2-Introduction_to_Python/data/restaurant-names.txt" 

with open(f_name) as f: 
    print ("There are", sum(1 for _ in f), "restaurants in the dataset") 
    f.seek(0) 
    sub = "italian" 
    count = sum(sub in line.lower() for line in f) 

を論理を再分割するか、単語境界のある正規表現を使用します。

-1

ファイルを文字列として入力します。
次に、文字列のcountメソッドを使用します。
コード:

#Let the file be taken as a string in s1 
print s1.count("italian") 
関連する問題