如何使用 python 从 txt 文件中删除一行?
how to delete a line from a txt file using python?
我有一个包含学生姓名、地址、成绩等数据的文件。我创建了一个函数,可以根据学生的名字和姓氏从文本文件中删除整行。此功能工作正常。然而,后来,我决定更新它,这样如果用户输入了一个不在文件中的名字,它就会打印:Student not found。但是,现在即使用户键入文件中的名称,它仍会打印:student not found...
这是我的代码:
def delete_a_record(filename):
x=input("Remove First Name:")
y=input("Remove Last Name:")
with open(filename, "r") as f:
lines = f.readlines()
with open(filename, "w") as f:
for i in lines:
t=i.split()
if t[0]!=x and t[1]!=y:
f.write(i)
elif x or y not in t:
print("Student Not Found")
f.close()
delete_a_record("mytextfile.txt")
谁能给我解释一下为什么?
可能是因为您是逐行迭代,所以即使名称在 .txt 文件中,每次名称与当前行不匹配时,它也会打印 "Student Not Found"。您需要重写您的函数,以便仅在行已用尽且未找到名称时才执行打印语句。
我不理解的地方(如果我错了请纠正我),我想你的逻辑有两个问题。
- 如果你想测试 x 和 y 是否不在 t 你应该单独测试它,比如:
if t[0]!=x and t[1]!=y:
f.write(i)
elif x not in t and y not in t:
print("Student Not Found")
现在的方式是,如果 x 不是 None,条件 elif x or ...
将始终 return 为真,因为 x 计算结果为真。
- 如果你想检查学生是否不在整个文件中,我认为你不应该对你阅读的每一行都进行测试。由于您不知道学生可能在哪一行,也许您可以重新组织代码以先处理整个文件,然后再测试是否找不到学生。
如果您想使用您的功能并在其中搜索(您不想更改您的功能),您可以将您的数据放在一个列表中并在该列表中搜索,如下代码所示:
list=['f_Name = Lorem','l_Name = Ipsum']
if "f_Name = "+x in list or "l_Name = "+y in list:
print("True")
else:
print("Student Not Found")
我有一个包含学生姓名、地址、成绩等数据的文件。我创建了一个函数,可以根据学生的名字和姓氏从文本文件中删除整行。此功能工作正常。然而,后来,我决定更新它,这样如果用户输入了一个不在文件中的名字,它就会打印:Student not found。但是,现在即使用户键入文件中的名称,它仍会打印:student not found...
这是我的代码:
def delete_a_record(filename):
x=input("Remove First Name:")
y=input("Remove Last Name:")
with open(filename, "r") as f:
lines = f.readlines()
with open(filename, "w") as f:
for i in lines:
t=i.split()
if t[0]!=x and t[1]!=y:
f.write(i)
elif x or y not in t:
print("Student Not Found")
f.close()
delete_a_record("mytextfile.txt")
谁能给我解释一下为什么?
可能是因为您是逐行迭代,所以即使名称在 .txt 文件中,每次名称与当前行不匹配时,它也会打印 "Student Not Found"。您需要重写您的函数,以便仅在行已用尽且未找到名称时才执行打印语句。
我不理解的地方(如果我错了请纠正我),我想你的逻辑有两个问题。
- 如果你想测试 x 和 y 是否不在 t 你应该单独测试它,比如:
if t[0]!=x and t[1]!=y:
f.write(i)
elif x not in t and y not in t:
print("Student Not Found")
现在的方式是,如果 x 不是 None,条件 elif x or ...
将始终 return 为真,因为 x 计算结果为真。
- 如果你想检查学生是否不在整个文件中,我认为你不应该对你阅读的每一行都进行测试。由于您不知道学生可能在哪一行,也许您可以重新组织代码以先处理整个文件,然后再测试是否找不到学生。
如果您想使用您的功能并在其中搜索(您不想更改您的功能),您可以将您的数据放在一个列表中并在该列表中搜索,如下代码所示:
list=['f_Name = Lorem','l_Name = Ipsum']
if "f_Name = "+x in list or "l_Name = "+y in list:
print("True")
else:
print("Student Not Found")