2017-04-15 8 views
0

次の単語保存:テキストファイルから特定の単語を読んで、その後、私はこのようになり、テキストファイルから読み取る必要が

football 1 
basketball 2 
hockey 0 
tennis 2 
... 
ラインのx個がある

、それぞれのスポーツでのと番号。私はスポーツを与えられ、そのスポーツの数を変数に保存しなければならないが、それを行うには良い方法を見つけることができない。

+0

Pythonでタグ付けする場合は、いくつかのPythonコードを表示しますか? –

答えて

1

ここにいくつかのオプションがあります。最も単純なのは、標準のPythonを使ってファイルオブジェクトを繰り返し処理することです。

# This will only get the first occurrence 
with open("sportfile.txt", "r") as f: 
    for line in f: 
     curr_sport, num = line.split() 
     if curr_sport==sport: 
      break 

あなたが複数のオカレンスを持っている場合は、リスト内の番号を保存することができます - またはあなたが特異性を必要としない場合は、それらを合計することができ...当面の問題に依存します。

sport = 'football' # for example 
football_nums = [] 
with open("sportfile.txt", "r") as f: 
    for line in f: 
     curr_sport, num = line.split() 
     if curr_sport==sport: 
      football_nums.append(num) 

Pythonでファイルハンドル上の情報のためのドキュメント "https://docs.python.org/2/tutorial/inputoutput.html#reading-and-writing-files" を参照してください。

あなたはあなたがパンダを使用する可能性のあるスポーツと対応する番号を見つけるために照会することができるのpython構造にファイルを変換する必要がある場合は

df = pd.read_csv('sportfile.txt', sep = ' ') 
df.columns = ['sport', 'num'] 
df[df.sport=='football'] # returns all rows where the sport is football. 

パンダ(やり過ぎかもしれないが、私は:-)パンダが大好き) .read_csv()は詳細で強力です。http://pandas.pydata.org/pandas-docs/stable/generated/pandas.read_csv.html

+0

'split()'への2回の呼び出しを避けるために、 'current_sport、num = line.split()'を使う方が良いです。 –

+0

ur right ur right – RSHAP

+0

ありがとう、これは私が探していたものです! :) – ibp4

0

気軽にお試しください。クイックサンプルをシェルでテストしました。

import sys 


if __name__ == '__main__': 
    key = "football" 
    for line in sys.stdin: 
     sport, number = line.split() 
     if sport == key: 
      print "{}, {}".format(sport, number) 
      break 
    else: 
     print "{} not found".format(key) 
関連する問題