如何检查字符串列表,然后选择该项的其余部分,

2024-04-18 17:25:03 发布

您现在位置:Python中文网/ 问答频道 /正文

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

jack 12
sarah 20
ben 4

现在我想能够搜索这个say sarah并返回代码。你知道吗

这就是我现在拥有的。你知道吗

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

所以我把它们都编成了一个单子,虽然我知道我可以检查这个单子,看看它们是否在那里,尽管我不知道如何选择时间。你知道吗

此时,我知道如果我得到,比如说,sarah 12,我可以使用split,然后格式化它来获得时间。你知道吗

谢谢你的帮助。你知道吗


Tags: 代码def时间openmyfilelists单子say
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']

另一种解决问题的方法:

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语句!你知道吗

相关问题 更多 >