Tôi nghĩ rằng nếu bạn đọc tệp vào một danh sách, thì hãy thực hiện bạn có thể lặp qua danh sách để tìm biệt danh bạn muốn thoát khỏi. Bạn có thể làm điều đó một cách hiệu quả mà không cần tạo các tệp bổ sung, nhưng bạn sẽ phải viết kết quả trở lại tệp nguồn.
Đây là cách tôi có thể làm điều này:
import, os, csv # and other imports you need nicknames_to_delete = ['Nick', 'Stephen', 'Mark']Tôi đang giả sử nicknames.csv chứa dữ liệu như:
Nick Maria James Chris Mario Stephen Isabella Ahmed Julia Mark ...Sau đó tải tệp vào danh sách:
nicknames = None with open("nicknames.csv") as sourceFile: nicknames = sourceFile.read().splitlines()Tiếp theo, lặp lại vào danh sách để phù hợp với đầu vào của bạn để xóa:
for nick in nicknames_to_delete: try: if nick in nicknames: nicknames.pop(nicknames.index(nick)) else: print(nick + " is not found in the file") except ValueError: passCuối cùng, viết kết quả trở lại tệp:
with open("nicknames.csv", "a") as nicknamesFile: nicknamesFile.seek(0) nicknamesFile.truncate() nicknamesWriter = csv.writer(nicknamesFile) for name in nicknames: nicknamesWriter.writeRow([str(name)]) nicknamesFile.close()Trong bài viết này, chúng ta sẽ xem cách xóa các dòng cụ thể khỏi tệp bằng cách sử dụng Python
Trong suốt chương trình này, làm ví dụ, chúng tôi sẽ sử dụng một tệp văn bản có tên là tháng.txt trên đó các hoạt động xóa khác nhau sẽ được thực hiện.months.txt on which various deletion operations would be performed.
Phương pháp 1: Xóa một dòng bằng cách sử dụng một vị trí cụ thể
Trong phương thức này, tệp văn bản được đọc từng dòng bằng cách sử dụng readlines (). Nếu một dòng có một vị trí tương tự như vị trí bị xóa, nó không được viết trong tệp văn bản mới được tạo. & NBSP;
Example:
Python3
Nick Maria James Chris Mario Stephen Isabella Ahmed Julia Mark ... 0Nick Maria James Chris Mario Stephen Isabella Ahmed Julia Mark ... 1
Nick Maria James Chris Mario Stephen Isabella Ahmed Julia Mark ... 2Nick Maria James Chris Mario Stephen Isabella Ahmed Julia Mark ... 3Nick Maria James Chris Mario Stephen Isabella Ahmed Julia Mark ... 4Nick Maria James Chris Mario Stephen Isabella Ahmed Julia Mark ... 5Nick Maria James Chris Mario Stephen Isabella Ahmed Julia Mark ... 6Nick Maria James Chris Mario Stephen Isabella Ahmed Julia Mark ... 7Nick Maria James Chris Mario Stephen Isabella Ahmed Julia Mark ... 8Nick Maria James Chris Mario Stephen Isabella Ahmed Julia Mark ... 9
nicknames = None with open("nicknames.csv") as sourceFile: nicknames = sourceFile.read().splitlines() 0 nicknames = None with open("nicknames.csv") as sourceFile: nicknames = sourceFile.read().splitlines() 1 nicknames = None with open("nicknames.csv") as sourceFile: nicknames = sourceFile.read().splitlines() 2 nicknames = None with open("nicknames.csv") as sourceFile: nicknames = sourceFile.read().splitlines() 3
nicknames = None with open("nicknames.csv") as sourceFile: nicknames = sourceFile.read().splitlines() 0 nicknames = None with open("nicknames.csv") as sourceFile: nicknames = sourceFile.read().splitlines() 5 nicknames = None with open("nicknames.csv") as sourceFile: nicknames = sourceFile.read().splitlines() 2 nicknames = None with open("nicknames.csv") as sourceFile: nicknames = sourceFile.read().splitlines() 7
nicknames = None with open("nicknames.csv") as sourceFile: nicknames = sourceFile.read().splitlines() 0Nick Maria James Chris Mario Stephen Isabella Ahmed Julia Mark ... 3Nick Maria James Chris Mario Stephen Isabella Ahmed Julia Mark ... 4Nick Maria James Chris Mario Stephen Isabella Ahmed Julia Mark ... 5Nick Maria James Chris Mario Stephen Isabella Ahmed Julia Mark ... 6Nick Maria James Chris Mario Stephen Isabella Ahmed Julia Mark ... 7for nick in nicknames_to_delete: try: if nick in nicknames: nicknames.pop(nicknames.index(nick)) else: print(nick + " is not found in the file") except ValueError: pass 4for nick in nicknames_to_delete: try: if nick in nicknames: nicknames.pop(nicknames.index(nick)) else: print(nick + " is not found in the file") except ValueError: pass 5
for nick in nicknames_to_delete: try: if nick in nicknames: nicknames.pop(nicknames.index(nick)) else: print(nick + " is not found in the file") except ValueError: pass 6for nick in nicknames_to_delete: try: if nick in nicknames: nicknames.pop(nicknames.index(nick)) else: print(nick + " is not found in the file") except ValueError: pass 7 for nick in nicknames_to_delete: try: if nick in nicknames: nicknames.pop(nicknames.index(nick)) else: print(nick + " is not found in the file") except ValueError: pass 8for nick in nicknames_to_delete: try: if nick in nicknames: nicknames.pop(nicknames.index(nick)) else: print(nick + " is not found in the file") except ValueError: pass 9 with open("nicknames.csv", "a") as nicknamesFile: nicknamesFile.seek(0) nicknamesFile.truncate() nicknamesWriter = csv.writer(nicknamesFile) for name in nicknames: nicknamesWriter.writeRow([str(name)]) nicknamesFile.close() 0
with open("nicknames.csv", "a") as nicknamesFile: nicknamesFile.seek(0) nicknamesFile.truncate() nicknamesWriter = csv.writer(nicknamesFile) for name in nicknames: nicknamesWriter.writeRow([str(name)]) nicknamesFile.close() 1with open("nicknames.csv", "a") as nicknamesFile: nicknamesFile.seek(0) nicknamesFile.truncate() nicknamesWriter = csv.writer(nicknamesFile) for name in nicknames: nicknamesWriter.writeRow([str(name)]) nicknamesFile.close() 2 Nick Maria James Chris Mario Stephen Isabella Ahmed Julia Mark ... 99 nicknames = None with open("nicknames.csv") as sourceFile: nicknames = sourceFile.read().splitlines() 00nicknames.csv6 nicknames = None with open("nicknames.csv") as sourceFile: nicknames = sourceFile.read().splitlines() 02222 nicknames = None with open("nicknames.csv") as sourceFile: nicknames = sourceFile.read().splitlines() 04
with open("nicknames.csv", "a") as nicknamesFile: nicknamesFile.seek(0) nicknamesFile.truncate() nicknamesWriter = csv.writer(nicknamesFile) for name in nicknames: nicknamesWriter.writeRow([str(name)]) nicknamesFile.close() 7with open("nicknames.csv", "a") as nicknamesFile: nicknamesFile.seek(0) nicknamesFile.truncate() nicknamesWriter = csv.writer(nicknamesFile) for name in nicknames: nicknamesWriter.writeRow([str(name)]) nicknamesFile.close() 8
Tất cả các dòng không có chiều dài lớn hơn hoặc bằng 7 đã bị xóa:
Nick Maria James Chris Mario Stephen Isabella Ahmed Julia Mark ... 2Deleted5Nick Maria James Chris Mario Stephen Isabella Ahmed Julia Mark ... 5Deleted7Deleted8
Deleted9Nick Maria James Chris Mario Stephen Isabella Ahmed Julia Mark ... 1
Nick Maria James Chris Mario Stephen Isabella Ahmed Julia Mark ... 2Deleted5Nick Maria James Chris Mario Stephen Isabella Ahmed Julia Mark ... 5Deleted4Deleted8
Output:
DeletedLàm thế nào để bạn xóa một dòng cụ thể trong một tệp?
Sử dụng một số để xóa một dòng.
Mở tệp ở chế độ đọc ..
Python3
Nick Maria James Chris Mario Stephen Isabella Ahmed Julia Mark ... 0Nick Maria James Chris Mario Stephen Isabella Ahmed Julia Mark ... 1
Nick Maria James Chris Mario Stephen Isabella Ahmed Julia Mark ... 2Nick Maria James Chris Mario Stephen Isabella Ahmed Julia Mark ... 3Nick Maria James Chris Mario Stephen Isabella Ahmed Julia Mark ... 4Nick Maria James Chris Mario Stephen Isabella Ahmed Julia Mark ... 5Nick Maria James Chris Mario Stephen Isabella Ahmed Julia Mark ... 6Nick Maria James Chris Mario Stephen Isabella Ahmed Julia Mark ... 7Nick Maria James Chris Mario Stephen Isabella Ahmed Julia Mark ... 8Nick Maria James Chris Mario Stephen Isabella Ahmed Julia Mark ... 9
nicknames = None with open("nicknames.csv") as sourceFile: nicknames = sourceFile.read().splitlines() 0 nicknames = None with open("nicknames.csv") as sourceFile: nicknames = sourceFile.read().splitlines() 1 nicknames = None with open("nicknames.csv") as sourceFile: nicknames = sourceFile.read().splitlines() 2 nicknames = None with open("nicknames.csv") as sourceFile: nicknames = sourceFile.read().splitlines() 3
nicknames = None with open("nicknames.csv") as sourceFile: nicknames = sourceFile.read().splitlines() 0Nick Maria James Chris Mario Stephen Isabella Ahmed Julia Mark ... 3Nick Maria James Chris Mario Stephen Isabella Ahmed Julia Mark ... 4Nick Maria James Chris Mario Stephen Isabella Ahmed Julia Mark ... 5Deleted4Nick Maria James Chris Mario Stephen Isabella Ahmed Julia Mark ... 7for nick in nicknames_to_delete: try: if nick in nicknames: nicknames.pop(nicknames.index(nick)) else: print(nick + " is not found in the file") except ValueError: pass 4for nick in nicknames_to_delete: try: if nick in nicknames: nicknames.pop(nicknames.index(nick)) else: print(nick + " is not found in the file") except ValueError: pass 5
for nick in nicknames_to_delete: try: if nick in nicknames: nicknames.pop(nicknames.index(nick)) else: print(nick + " is not found in the file") except ValueError: pass 6for nick in nicknames_to_delete: try: if nick in nicknames: nicknames.pop(nicknames.index(nick)) else: print(nick + " is not found in the file") except ValueError: pass 7 for nick in nicknames_to_delete: try: if nick in nicknames: nicknames.pop(nicknames.index(nick)) else: print(nick + " is not found in the file") except ValueError: pass 8for nick in nicknames_to_delete: try: if nick in nicknames: nicknames.pop(nicknames.index(nick)) else: print(nick + " is not found in the file") except ValueError: pass 9 with open("nicknames.csv", "a") as nicknamesFile: nicknamesFile.seek(0) nicknamesFile.truncate() nicknamesWriter = csv.writer(nicknamesFile) for name in nicknames: nicknamesWriter.writeRow([str(name)]) nicknamesFile.close() 0
with open("nicknames.csv", "a") as nicknamesFile: nicknamesFile.seek(0) nicknamesFile.truncate() nicknamesWriter = csv.writer(nicknamesFile) for name in nicknames: nicknamesWriter.writeRow([str(name)]) nicknamesFile.close() 1with open("nicknames.csv", "a") as nicknamesFile: nicknamesFile.seek(0) nicknamesFile.truncate() nicknamesWriter = csv.writer(nicknamesFile) for name in nicknames: nicknamesWriter.writeRow([str(name)]) nicknamesFile.close() 2 Nick Maria James Chris Mario Stephen Isabella Ahmed Julia Mark ... 99 nicknames = None with open("nicknames.csv") as sourceFile: nicknames = sourceFile.read().splitlines() 00nicknames.csv6 nicknames = None with open("nicknames.csv") as sourceFile: nicknames = sourceFile.read().splitlines() 02222 nicknames = None with open("nicknames.csv") as sourceFile: nicknames = sourceFile.read().splitlines() 04
with open("nicknames.csv", "a") as nicknamesFile: nicknamesFile.seek(0) nicknamesFile.truncate() nicknamesWriter = csv.writer(nicknamesFile) for name in nicknames: nicknamesWriter.writeRow([str(name)]) nicknamesFile.close() 7with open("nicknames.csv", "a") as nicknamesFile: nicknamesFile.seek(0) nicknamesFile.truncate() nicknamesWriter = csv.writer(nicknamesFile) for name in nicknames: nicknamesWriter.writeRow([str(name)]) nicknamesFile.close() 8
Nick Maria James Chris Mario Stephen Isabella Ahmed Julia Mark ... 2Deleted5Nick Maria James Chris Mario Stephen Isabella Ahmed Julia Mark ... 5Deleted7Deleted8
Deleted9Nick Maria James Chris Mario Stephen Isabella Ahmed Julia Mark ... 1
Nick Maria James Chris Mario Stephen Isabella Ahmed Julia Mark ... 2Deleted5Nick Maria James Chris Mario Stephen Isabella Ahmed Julia Mark ... 5Deleted4Deleted8
Output:
DeletedTất cả các dòng không có chiều dài lớn hơn hoặc bằng 7 đã bị xóa:
Làm thế nào để bạn xóa một dòng cụ thể trong một tệp?
Sử dụng một số để xóa một dòng.
Mở tệp ở chế độ đọc ..
Python3
Nick Maria James Chris Mario Stephen Isabella Ahmed Julia Mark ... 0Nick Maria James Chris Mario Stephen Isabella Ahmed Julia Mark ... 1
Nick Maria James Chris Mario Stephen Isabella Ahmed Julia Mark ... 2Nick Maria James Chris Mario Stephen Isabella Ahmed Julia Mark ... 3Nick Maria James Chris Mario Stephen Isabella Ahmed Julia Mark ... 4Nick Maria James Chris Mario Stephen Isabella Ahmed Julia Mark ... 5Nick Maria James Chris Mario Stephen Isabella Ahmed Julia Mark ... 6Nick Maria James Chris Mario Stephen Isabella Ahmed Julia Mark ... 7Nick Maria James Chris Mario Stephen Isabella Ahmed Julia Mark ... 8Nick Maria James Chris Mario Stephen Isabella Ahmed Julia Mark ... 9
nicknames = None with open("nicknames.csv") as sourceFile: nicknames = sourceFile.read().splitlines() 0 nicknames = None with open("nicknames.csv") as sourceFile: nicknames = sourceFile.read().splitlines() 1 nicknames = None with open("nicknames.csv") as sourceFile: nicknames = sourceFile.read().splitlines() 2 nicknames = None with open("nicknames.csv") as sourceFile: nicknames = sourceFile.read().splitlines() 3
nicknames = None with open("nicknames.csv") as sourceFile: nicknames = sourceFile.read().splitlines() 0Nick Maria James Chris Mario Stephen Isabella Ahmed Julia Mark ... 3Nick Maria James Chris Mario Stephen Isabella Ahmed Julia Mark ... 4Nick Maria James Chris Mario Stephen Isabella Ahmed Julia Mark ... 5Nick Maria James Chris Mario Stephen Isabella Ahmed Julia Mark ... 33Nick Maria James Chris Mario Stephen Isabella Ahmed Julia Mark ... 7for nick in nicknames_to_delete: try: if nick in nicknames: nicknames.pop(nicknames.index(nick)) else: print(nick + " is not found in the file") except ValueError: pass 4for nick in nicknames_to_delete: try: if nick in nicknames: nicknames.pop(nicknames.index(nick)) else: print(nick + " is not found in the file") except ValueError: pass 5
for nick in nicknames_to_delete: try: if nick in nicknames: nicknames.pop(nicknames.index(nick)) else: print(nick + " is not found in the file") except ValueError: pass 6for nick in nicknames_to_delete: try: if nick in nicknames: nicknames.pop(nicknames.index(nick)) else: print(nick + " is not found in the file") except ValueError: pass 7 for nick in nicknames_to_delete: try: if nick in nicknames: nicknames.pop(nicknames.index(nick)) else: print(nick + " is not found in the file") except ValueError: pass 8for nick in nicknames_to_delete: try: if nick in nicknames: nicknames.pop(nicknames.index(nick)) else: print(nick + " is not found in the file") except ValueError: pass 9 with open("nicknames.csv", "a") as nicknamesFile: nicknamesFile.seek(0) nicknamesFile.truncate() nicknamesWriter = csv.writer(nicknamesFile) for name in nicknames: nicknamesWriter.writeRow([str(name)]) nicknamesFile.close() 0
with open("nicknames.csv", "a") as nicknamesFile: nicknamesFile.seek(0) nicknamesFile.truncate() nicknamesWriter = csv.writer(nicknamesFile) for name in nicknames: nicknamesWriter.writeRow([str(name)]) nicknamesFile.close() 1with open("nicknames.csv", "a") as nicknamesFile: nicknamesFile.seek(0) nicknamesFile.truncate() nicknamesWriter = csv.writer(nicknamesFile) for name in nicknames: nicknamesWriter.writeRow([str(name)]) nicknamesFile.close() 2 Nick Maria James Chris Mario Stephen Isabella Ahmed Julia Mark ... 99 nicknames = None with open("nicknames.csv") as sourceFile: nicknames = sourceFile.read().splitlines() 00nicknames.csv6 nicknames = None with open("nicknames.csv") as sourceFile: nicknames = sourceFile.read().splitlines() 02222 nicknames = None with open("nicknames.csv") as sourceFile: nicknames = sourceFile.read().splitlines() 04
with open("nicknames.csv", "a") as nicknamesFile: nicknamesFile.seek(0) nicknamesFile.truncate() nicknamesWriter = csv.writer(nicknamesFile) for name in nicknames: nicknamesWriter.writeRow([str(name)]) nicknamesFile.close() 7with open("nicknames.csv", "a") as nicknamesFile: nicknamesFile.seek(0) nicknamesFile.truncate() nicknamesWriter = csv.writer(nicknamesFile) for name in nicknames: nicknamesWriter.writeRow([str(name)]) nicknamesFile.close() 8
Nick Maria James Chris Mario Stephen Isabella Ahmed Julia Mark ... 2Deleted5Nick Maria James Chris Mario Stephen Isabella Ahmed Julia Mark ... 5Deleted7Deleted8
Deleted9Nick Maria James Chris Mario Stephen Isabella Ahmed Julia Mark ... 1
Nick Maria James Chris Mario Stephen Isabella Ahmed Julia Mark ... 2Deleted5Nick Maria James Chris Mario Stephen Isabella Ahmed Julia Mark ... 5Deleted4Deleted8
Output:
DeletedTất cả các dòng chứa mẫu ’ber, chẳng hạn như’ 9 tháng 9, Hồi10 -Oc-tháng 10, Hồi11 -November, hồi12 -december, đã bị xóa.
Ví dụ 2: Xóa các dòng với điều kiệnDeleting lines with the condition
Nếu chúng ta có một điều kiện là các dòng trong tệp của chúng ta phải có độ dài tối thiểu. Vì vậy, ví dụ sau đây cho thấy cách xóa các dòng không có độ dài được chỉ định tối thiểu.
Python3
Nick Maria James Chris Mario Stephen Isabella Ahmed Julia Mark ... 0Nick Maria James Chris Mario Stephen Isabella Ahmed Julia Mark ... 1
Các
nicknames = None with open("nicknames.csv") as sourceFile: nicknames = sourceFile.read().splitlines() 0 nicknames = None with open("nicknames.csv") as sourceFile: nicknames = sourceFile.read().splitlines() 1 nicknames = None with open("nicknames.csv") as sourceFile: nicknames = sourceFile.read().splitlines() 2 nicknames = None with open("nicknames.csv") as sourceFile: nicknames = sourceFile.read().splitlines() 3
nicknames = None with open("nicknames.csv") as sourceFile: nicknames = sourceFile.read().splitlines() 0Nick Maria James Chris Mario Stephen Isabella Ahmed Julia Mark ... 81 nicknames = None with open("nicknames.csv") as sourceFile: nicknames = sourceFile.read().splitlines() 2 Nick Maria James Chris Mario Stephen Isabella Ahmed Julia Mark ... 83
nicknames = None with open("nicknames.csv") as sourceFile: nicknames = sourceFile.read().splitlines() 0Nick Maria James Chris Mario Stephen Isabella Ahmed Julia Mark ... 3Nick Maria James Chris Mario Stephen Isabella Ahmed Julia Mark ... 4Nick Maria James Chris Mario Stephen Isabella Ahmed Julia Mark ... 5Nick Maria James Chris Mario Stephen Isabella Ahmed Julia Mark ... 88Nick Maria James Chris Mario Stephen Isabella Ahmed Julia Mark ... 7for nick in nicknames_to_delete: try: if nick in nicknames: nicknames.pop(nicknames.index(nick)) else: print(nick + " is not found in the file") except ValueError: pass 4for nick in nicknames_to_delete: try: if nick in nicknames: nicknames.pop(nicknames.index(nick)) else: print(nick + " is not found in the file") except ValueError: pass 5
for nick in nicknames_to_delete: try: if nick in nicknames: nicknames.pop(nicknames.index(nick)) else: print(nick + " is not found in the file") except ValueError: pass 6for nick in nicknames_to_delete: try: if nick in nicknames: nicknames.pop(nicknames.index(nick)) else: print(nick + " is not found in the file") except ValueError: pass 7 for nick in nicknames_to_delete: try: if nick in nicknames: nicknames.pop(nicknames.index(nick)) else: print(nick + " is not found in the file") except ValueError: pass 8for nick in nicknames_to_delete: try: if nick in nicknames: nicknames.pop(nicknames.index(nick)) else: print(nick + " is not found in the file") except ValueError: pass 9 with open("nicknames.csv", "a") as nicknamesFile: nicknamesFile.seek(0) nicknamesFile.truncate() nicknamesWriter = csv.writer(nicknamesFile) for name in nicknames: nicknamesWriter.writeRow([str(name)]) nicknamesFile.close() 0
with open("nicknames.csv", "a") as nicknamesFile: nicknamesFile.seek(0) nicknamesFile.truncate() nicknamesWriter = csv.writer(nicknamesFile) for name in nicknames: nicknamesWriter.writeRow([str(name)]) nicknamesFile.close() 1with open("nicknames.csv", "a") as nicknamesFile: nicknamesFile.seek(0) nicknamesFile.truncate() nicknamesWriter = csv.writer(nicknamesFile) for name in nicknames: nicknamesWriter.writeRow([str(name)]) nicknamesFile.close() 2 Nick Maria James Chris Mario Stephen Isabella Ahmed Julia Mark ... 99 nicknames = None with open("nicknames.csv") as sourceFile: nicknames = sourceFile.read().splitlines() 00nicknames.csv6 nicknames = None with open("nicknames.csv") as sourceFile: nicknames = sourceFile.read().splitlines() 02222 nicknames = None with open("nicknames.csv") as sourceFile: nicknames = sourceFile.read().splitlines() 04
with open("nicknames.csv", "a") as nicknamesFile: nicknamesFile.seek(0) nicknamesFile.truncate() nicknamesWriter = csv.writer(nicknamesFile) for name in nicknames: nicknamesWriter.writeRow([str(name)]) nicknamesFile.close() 7with open("nicknames.csv", "a") as nicknamesFile: nicknamesFile.seek(0) nicknamesFile.truncate() nicknamesWriter = csv.writer(nicknamesFile) for name in nicknames: nicknamesWriter.writeRow([str(name)]) nicknamesFile.close() 8
Nick Maria James Chris Mario Stephen Isabella Ahmed Julia Mark ... 2Deleted5Nick Maria James Chris Mario Stephen Isabella Ahmed Julia Mark ... 5Deleted7Deleted8
Deleted9Nick Maria James Chris Mario Stephen Isabella Ahmed Julia Mark ... 1
Nick Maria James Chris Mario Stephen Isabella Ahmed Julia Mark ... 2Deleted5Nick Maria James Chris Mario Stephen Isabella Ahmed Julia Mark ... 5Deleted4Deleted8
Output:
DeletedTất cả các dòng không có chiều dài lớn hơn hoặc bằng 7 đã bị xóa: