Xóa 1 line trong file text?
Chào mọi người!
Mình mới bắt đầu học lập trình, python là ngôn ngữ đầu tiên mình đang học. Mình có 1 vài thắc mắc mong mọi người giúp đỡ.
Mình có 1 text file “student.txt”, nội dung text file format như sau:
1991AB MIT EF
1992CB CAF AF
…
Cho mình hỏi: Làm thế nào mà khi mình nhập input “1991AB” - chương trình sẽ tìm và xóa line có chứa input ( cụ thể là xóa line [1991AB MIT EF] ) trong text file và print “đã xóa”. Ngược lại, nếu mình nhập input, mà input không có trong text file -> print(“không tìm thấy”).
3 ngày rồi mình không biết làm sao. Mong mọi người giúp đỡ.
P/s: Thầy mình nói không thể xóa line trong text được, phải xóa trong list trước, rùi copy từ list vào file…Mà mình không biết!!
Cám ơn mọi người nhiều!
Đây là code mình có cho đến bây giờ:
studentList = []
studentFile = open ("students1.txt", "r")
for line in studentFile:
smallList = (line.rstrip()).split()
studentList.append(smallList)
studentFile.close()
deleteNumber = input("Enter number: ")
if len(deleteNumber) == 0:
print("WARNING: Input can not blank -- Please do again!")
Delete()
while len(deleteNumber) != 8:
print("Student number must have 8 digits")
deleteNumber = input("Please try again: ")
for line in studentList:
if deleteNumber in line:
with open("students1.txt") as studentList,
open("students2.txt", "w") as studentList2:
for line in studentList:
if deleteNumber not in line:
studentList2.write(line)
print("The student was deleted from the file…!")
else:
print("The student number is invalid")
Ý tưởng của mình tương tự với thầy của bạn: đọc dữ liệu vào list, sau đó xác nhận dữ liệu nhập vào có trùng với với line nào hay không, sau đó ghi dữ liệu.
Cụ thể:
Trong đó:
d_count
: là biến đếm có bao nhiêu kết quả giống như tìm kiếm.buff
: là biến đệm chứa dữ liệu người dùng nhập vào.Cảm ơn bạn nhiều nha. Code bạn giúp mình hoàn toàn mới với mình, mình phải học thêm nhìu :D. Mình sẽ thử code của bạn. Tks bạn nhiều.
Mình có làm lại code của mình:
def Delete():
studentList = []
studentFile = open(“students1.txt”, “r”)
for line in studentFile:
smallList = (line.rstrip()).split()
studentList.append(smallList)
studentFile.close()
Delete()
Nó chạy được, nhưng mà khi ghi vào file mới, nó ra định dạng này:
Format như thế nào để nó mất những cái dấu di vậy bạn? Tks bạn nhiều nha
Vì mỗi phần tử trong
studentList
là 1 list (do bạn dùngsplit()
khi đọc file “students1.txt”) nên khi xuất ra thì bạn phải chỉ định cho từng phần tử. Cái mà bạn ghi vào file là định dạng list của python thôi, không có gì hết.Giải quyết: Dòng
studentFile.write(str(ele) + "\n"))
sửa thành:stutentFile.write(' '.join(ele) + "\n"))
Perfect !
Ghi file thành công bạn ơi…Cám ơn bạn nhiều nha !!