为了账号安全,请及时绑定邮箱和手机立即绑定

Python:如何从文本中返回特定行

Python:如何从文本中返回特定行

小怪兽爱吃肉 2023-12-20 16:19:01
我是新来的,也是编程新手。我正在阅读 Jamie Chan 的《一日学习 Python》,目前处于实践项目部分。我试图让 python 从 txt 文件中读取一行。txt 文件包含一个名称和一个数字,以逗号分隔,这是文本文件Benny, 102Ann, 100Carol, 214Darren, 129我成功地让它读取第一行,但尝试通过调用那里的名称来打印第二行,但始终返回零。当我切换行时,会发生同样的事情,它读取第一行中的名称,但在第二个文件中的名称上返回空。这是我尝试用来阅读文本的函数:def getUserPoint(userName):    f = open('userScores.txt', 'r')    for line in f:        result = line.splitlines()        if userName in line:            return result        else:            return "nill"    f.close()s = getUserPoint(input('Ann'))print(s)这是结果:nill说明是这样的:每一行记录一个用户的信息。第一个值是用户的用户名,第二个值是用户的分数。接下来,该函数使用 for 循环逐行读取文件。然后使用 split() 函数分割每一行 让我们将 split() 函数的结果存储在列表内容中。接下来,该函数检查是否有任何行与作为参数传入的值具有相同的用户名。如果存在,该函数将关闭该文件并在该用户名旁边返回分数。如果不存在,该函数将关闭文件并返回字符串“-1”对于这篇冗长的帖子我感到非常抱歉。
查看完整描述

4 回答

?
慕村9548890

TA贡献1884条经验 获得超4个赞

您可以使用 :


def getUserPoint(userName):

  f = open('userScores.txt', 'r')

  for line in f.readlines():

    result = line.splitlines()

    if userName in line:

        f.close()

        return result

  

  f.close()

  return "nill"

  



s = getUserPoint(input('Ann'))

print(s)


查看完整回答
反对 回复 2023-12-20
?
繁花如伊

TA贡献2012条经验 获得超12个赞

一个问题是您有一个匹配的 else 语句,它将立即结束函数和循环


查看完所有行后,您需要返回默认结果


def getUserPoint(userName):

    with open('userScores.txt') as f:

        for line in f:

            if userName == line.rstrip().split(',')[0]:

                return line

    return "nill"

然后,如图所示,您要么想要拆分逗号并检查第一列,要么userName in line。否则,您正在检查


'Ann' in ["Ann, 100", ""]

因为splitlines()将在末尾的换行符处分割,返回 False


查看完整回答
反对 回复 2023-12-20
?
收到一只叮咚

TA贡献1821条经验 获得超4个赞

见下文


该代码负责关闭文件。


如果没有找到匹配则返回None,否则返回“用户点”


def get_user_point(user_name):

    with open('userScores.txt', 'r') as f:

      lines = [l.strip() for l in f]

      for line in lines:

        parts = line.split(',')

        if user_name == parts[0]:

          return parts[1]


查看完整回答
反对 回复 2023-12-20
?
MYYA

TA贡献1868条经验 获得超4个赞

def getUserPoint(userName):

    with open('userScores.txt') as f:

        for line in f:

            if userName == line.split(',')[0]:

                return line

    return "nill"

由于我是 Python 和一般编程的新手,我可能会问更多问题。感谢大家的帮助。


查看完整回答
反对 回复 2023-12-20
  • 4 回答
  • 0 关注
  • 150 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信