1

目前我有一个文本文件,里面有游泳的人和他们的时间,比如这个,

jack 12
sarah 20
ben 4

现在我希望能够搜索这个说 sarah 并让它返回代码。

这是我目前拥有的。

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

所以我将它们全部编译到一个列表中,尽管我知道我可以检查列表以查看它们是否存在,尽管我无法弄清楚我将如何选择时间。

在这一点上,我知道我是否可以说,sarah 12然后我可以使用 split 然后将其格式化以获取时间。

感谢您的帮助。

4

2 回答 2

2

你想要一个dict,一个python映射,并且只读取一次文件:

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 回答