Làm cách nào để xóa các dòng trùng lặp trong tệp văn bản bằng python?

Nhiệm vụ là loại bỏ các dòng trùng lặp khỏi tệp văn bản. Điều này có thể hữu ích khi chúng ta cần xóa các dòng trùng lặp trong các tệp lớn

Chương trình

openFile = open["demo.txt", "r"] 
writeFile = open["updatedFile", "w"] 
#Store traversed lines
tmp = set[] 
for txtLine in openFile: 
#Check new line
    if txtLine not in tmp: 
        writeFile.write[txtLine] 
#Add new traversed line to tmp 
        tmp.add[txtLine]         
openFile.close[] 
writeFile.close[]

đầu ra

Giải trình

Cách tiếp cận

  • Mở tệp đầu vào ở chế độ đọc và tệp đầu ra ở chế độ ghi để lưu trữ đầu ra
  • Lặp lại các dòng của tệp đầu vào và kiểm tra xem dòng đó có tồn tại trong set[] không. Nếu không tìm thấy dòng trong tập hợp [], hãy thêm dòng vào tập hợp rồi thêm dòng vào tệp đầu ra
  • Nếu dòng được tìm thấy trong tập hợp [], hãy bỏ qua quy trình tiếp theo và chuyển sang dòng tiếp theo của tệp
  • Lặp lại các bước trên
  • Lưu và đóng tệp đầu ra

bài viết liên quan

  • Chương trình đảo ngược nội dung của tệp văn bản và lưu trữ trong…
  • Chương trình nối nội dung của tệp này vào tệp khác…
  • Chương trình hợp nhất hai tệp thành tệp thứ ba bằng Python
  • Chương trình tìm kiếm tệp có phần mở rộng cụ thể bằng cách sử dụng…
  • Chương trình đếm số dòng trong file văn bản bằng…
  • Chương trình lấy số dòng chứa từ đã cho…

Để lại bình luận Hủy trả lời

Lưu tên, email và trang web của tôi trong trình duyệt này cho lần bình luận tiếp theo

Δ

Trang web này sử dụng Akismet để giảm thư rác. Tìm hiểu cách dữ liệu nhận xét của bạn được xử lý

Trong hướng dẫn này, chúng ta sẽ tìm hiểu cách xóa các dòng trùng lặp khỏi tệp văn bản bằng python. Đầu tiên, chương trình sẽ đọc các dòng của một tệp văn bản đầu vào và ghi các dòng đó vào một tệp văn bản đầu ra

Trong khi viết, chúng tôi sẽ liên tục kiểm tra bất kỳ dòng trùng lặp nào trong tệp. Dòng nào viết trước thì bỏ qua dòng đó. Ví dụ, đối với tệp văn bản sau

First Line
Second Line
First Line
First Line
First Line

đầu ra sẽ là

Trước tiên hãy xem xét thuật toán

  1. Đầu tiên, mở tệp đầu vào ở chế độ đọc vì chúng tôi chỉ đọc nội dung của tệp này
  2. Mở tệp đầu ra ở chế độ ghi vì chúng tôi đang ghi nội dung vào tệp này
  3. Đọc từng dòng từ tệp đầu vào và kiểm tra xem có dòng nào tương tự như dòng này được ghi vào tệp đầu ra không
  4. Nếu không, hãy ghi dòng này vào tệp đầu ra và lưu giá trị băm của dòng vào một tập hợp. Chúng tôi sẽ kiểm tra giá trị băm của từng dòng thay vì kiểm tra và lưu trữ toàn bộ dòng. Đây là cách tiếp cận hiệu quả về không gian và tốt hơn cho một tệp lớn
  5. Nếu giá trị băm đã được thêm vào tập hợp, hãy bỏ qua dòng đó
  6. Sau khi mọi thứ hoàn tất, tệp đầu ra sẽ chứa tất cả nội dung của tệp đầu vào mà không có bất kỳ dòng trùng lặp nào

Mã nguồn có sẵn ở đây

Các số nhận xét trong chương trình trên biểu thị số bước bên dưới

  1. Trước hết, hãy lưu đường dẫn của tệp đầu vào và đầu ra trong hai biến. Thay đổi các giá trị này thành đường dẫn tệp đầu vào và đầu ra của riêng bạn. Bạn có thể kéo và thả một tệp trên thiết bị đầu cuối để tìm ra đường dẫn
  2. Tạo một biến Set. Chúng tôi đang sử dụng Set vì nó chỉ có thể chứa các biến duy nhất. Không thể thêm các biến trùng lặp vào Tập hợp
  3. Mở tệp đầu ra ở chế độ ghi. Để mở tệp ở chế độ ghi, 'w' được sử dụng. Chúng tôi đang mở tệp đầu ra ở chế độ ghi vì chúng tôi sẽ ghi vào tệp này. phương thức open[] được sử dụng để mở một tập tin
  4. Bắt đầu một vòng lặp for để đọc từng dòng từ tệp đầu vào. Chúng tôi đang mở tệp ở chế độ đọc. 'r' được sử dụng để đọc tệp ở chế độ đọc
  5. Tìm giá trị băm của dòng hiện tại. Chúng tôi đang xóa mọi khoảng trắng và một dòng mới ở cuối dòng trước khi tính toán hàm băm. thư viện hashlib được sử dụng để tìm ra giá trị băm của một dòng
  6. Kiểm tra xem giá trị băm này đã có trong biến Set hay chưa. Nếu không, điều này có nghĩa là dòng này chưa được in ra tệp đầu ra. Đặt dòng vào tệp đầu ra và thêm giá trị băm vào biến Set
  7. Cuối cùng, đóng tệp văn bản đầu ra

Sự kết luận

Tôi hy vọng rằng bạn đã tìm thấy bài viết này hữu ích. Hãy thử chạy chương trình và vui lòng liên hệ với chúng tôi nếu bạn có bất kỳ thắc mắc nào

Chủ Đề