Python 将变量匹配到txt中的行并删除行时出现问题
我在将变量匹配到txt中的行以及删除这些行时遇到问题 我目前正在执行一个酒店客房预订计划,在该计划中,我无法从文本文件中删除预订 以下是文本文件中我的行的格式: 第一个姓名1、电话号码1和电子邮件1链接到输入框Python 将变量匹配到txt中的行并删除行时出现问题,python,Python,我在将变量匹配到txt中的行以及删除这些行时遇到问题 我目前正在执行一个酒店客房预订计划,在该计划中,我无法从文本文件中删除预订 以下是文本文件中我的行的格式: 第一个姓名1、电话号码1和电子邮件1链接到输入框 jeff;jeff@gmail.com;123123123;2019-06-09;2019-06-10;Single Room def edit_details(self,controller): f = open("Bookings.txt") li
jeff;jeff@gmail.com;123123123;2019-06-09;2019-06-10;Single Room
def edit_details(self,controller):
f = open("Bookings.txt")
lines = f.readlines()
f.close()
x = -1
for i in lines:
x += 1
data = lines[x]
first_name1 = str(controller.editName.get())
phonenumber1 = str(controller.editPhone.get())
email1 = str(controller.editEmail.get())
checkfirst_name, checkemail, checkphone_num, checkclock_in_date, checkclock_out_date, checkroom = map(str, data.split(";"))
if checkfirst_name.upper() == first_name1.upper() and checkemail.upper() == email1.upper() and checkphone_num == phonenumber1:
controller.roomName.set(checkfirst_name)
controller.roomEmail.set(checkemail)
controller.roomPhone.set(checkphone_num)
controller.roomCheckin.set(checkclock_in_date)
controller.roomCheckout.set(checkclock_out_date)
controller.roomSelect.set(checkroom)
print(controller.roomName.get())
print(controller.roomSelect.get())
controller.show_frame("cancelBooking")
break
elif x > len(lines) - int(2):
messagebox.showerror("Error", "Please Enter Valid Details")
break
我让用户输入他们的详细信息以提供变量,但我不知道如何将这些变量与文本文件中的行匹配以删除预订
我是否必须格式化这些变量以匹配行?
这是我尝试过的,但它删除了我文件中的最后一行
line_to_match = ';'.join([controller.roomName.get(),controller.roomEmail.get(),controller.roomPhone.get()])
print(line_to_match)
with open("Bookings.txt", "r+") as f:
line = f.readlines()
f.seek(0)
for i in line:
if i.startswith(line_to_match):
f.write(i)
f.truncate()
我在这里添加了一个伪代码。您可以使用
连接变量代码>并验证行是否以这些细节开始,如下所示
first_name1, phonenumber1, email1 = 'jeff', 'jeff@gmail.com', '123123123'
line_to_match = ';'.join([first_name1, email1, phonenumber1])
for i in line:
...
if i.startswith(line_to_match):
# Add your removal code here
...
我在这里添加了一个伪代码。您可以使用连接变量代码>并验证行是否以这些细节开始,如下所示
first_name1, phonenumber1, email1 = 'jeff', 'jeff@gmail.com', '123123123'
line_to_match = ';'.join([first_name1, email1, phonenumber1])
for i in line:
...
if i.startswith(line_to_match):
# Add your removal code here
...
为什么要存储在文件中?数据库怎么样?至少一个文件数据库?这是我的学校项目,我已经有用户以这种格式进行预订,这是我计划的最后一个阶段。您还可以添加包含这些详细信息的变量的代码吗?为什么要存储在文件中?数据库怎么样?至少一个文件数据库?这是我学校的项目,我已经有用户将预订设置为这种格式,这是我程序的最后一个阶段。您还可以添加包含这些详细信息的变量的代码吗?我是否必须读取文件才能使用行匹配,然后使用写入删除?@Jefferyfromkmart是。不要使用读取行
。直接迭代文件对象<代码>对于打开的行('file_name.txt'):
。我必须读取文件才能使用行匹配,然后使用write删除吗?@Jefferyfromkmart是。不要使用读取行
。直接迭代文件对象<代码>对于打开的行('file_name.txt'):
。