python - Python:如何从文本中返回特定行
问题描述
我是新来的,对编程也很陌生。我正在阅读 Jamie Chan 的《Learn Python in One Day》,目前在 Practical Project 部分。我试图让 python 从 txt 文件中读取一行。txt文件包含一个名称和一个用逗号分隔的数字,这是文本文件
Benny, 102
Ann, 100
Carol, 214
Darren, 129
我成功地使它读取了第一行,但是尝试通过调用那里的名称来打印第二行却一直返回零。当我切换行时,会发生同样的事情,它读取第一行中的名称,但在第二个文件中的名称上返回 nill。这是我试图用来阅读文本的功能:
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'</p>
非常抱歉这篇冗长的帖子。
解决方案
一个问题是您有一个匹配的 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
推荐阅读
- c# - 通过采用 Action 的反射调用方法
. 所有方法、包含类和 T 都标记为内部 - r - 如何在 R 中使用条件语句?
- c# - 如何从其文件夹外部执行 .exe
- performance - Jmeter 地址已在使用中,运行 600/秒的用户并发负载测试时出错
- powerbi - 基于切片器选择的输出使用 SWITCH 和 SELECTEDVALUE 的 DAX
- javascript - 鼠标靠近时改变背景
- css - 实现对齐
- ruby-on-rails - 如何从 API 将数据保存在“has_many trough”关系中?
- bash - 在 bash 函数中使用 grep 和 cut
- javascript - 按另一个对象排序对象(字符串)