1

現在、私は泳ぐ人々とその時代のテキストファイルを持っています。

jack 12
sarah 20
ben 4

今、私はこれを検索して、たとえばサラを検索し、コードを返すことができるようにしたいと思います。

これは私が現在持っているものです。

def Timers(swimmer):
  myFile = open("race.txt","r")
  lists = []
  for eachLine in myFile:
      lists += [eachLine.rstrip("\n")]

だから私はそれらすべてを1つのリストにまとめましたが、リストをチェックしてそれらが存在するかどうかを確認することはできますが、時間を選択する方法を理解することはできません。

この時点で、sarah 12私が言うことができるかどうかはわかります。次に、splitを使用して、それをフォーマットして時間を取得できます。

お手伝いありがとう。

4

2 に答える 2

2

dict代わりに、Pythonマッピングが必要で、ファイルを1だけ読み取ります。

def Timers():
    with open("race.txt","r") as myFile:
        swimmers = {}
        for eachLine in myFile:
            if line.strip():
                swimmer, timer = line.split()
                swimmers[swimmer] = timer
    return swimmers

.split()呼び出しは空白で行を分割し、各行の名前とタイマー文字列を提供します。

Timers()これで、すべてのスイマー名をキーとして、それらの時間を値として含むマッピングを返します。あなたは単に一人一人のスイマーを調べることができます:

timers = Timers()
print timers['sarah']
于 2013-03-25T20:49:10.180 に答える
1

問題への別のアプローチ:

def Timer(swimmer):
    myFile = open("race.txt", "r")
    lists = myFile.readlines()
    found = [l for l in lists if l.startswith(swimmer)][0]  # Gets first found swimmer
    time = found.split()[-1]  # Gets last item (eg. time) in splitted list
    myFile.close()
    return time

print Timer('jack')

これは、スイマーが姓名の両方で指定されている場合でも機能します。私はあなたがしたのと同じ方法でファイルを開きました。ただし、前の回答と同様に、実際にはwithステートメントを使用する必要があります。

于 2013-03-25T20:57:36.967 に答える