Hướng dẫn remove data from text file python - xóa dữ liệu khỏi tệp văn bản python

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 = None
 with open("nicknames.csv") as sourceFile:
     nicknames = sourceFile.read().splitlines()
1 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:
         pass

Cuố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()

Bài viết này cho bạn biết cách xóa các dòng cụ thể khỏi một tệp trong Python. Ví dụ: bạn muốn xóa các dòng #5 và #12.

Sau khi đọc bài viết này, bạn sẽ học::

  • Cách xóa các dòng cụ thể khỏi tệp theo số dòng
  • Cách xóa các dòng khớp hoặc chứa văn bản/chuỗi đã cho
  • Cách xóa dòng đầu tiên và cuối cùng khỏi tệp văn bản.

Xóa các dòng khỏi một tệp theo số dòng

Vui lòng làm theo các bước dưới đây để xóa các dòng cụ thể khỏi tệp văn bản theo số dòng: -

  1. Mở tệp ở chế độ đọc
  2. Đọc một tập tin. Đọc tất cả nội dung từ một tệp vào danh sách bằng phương thức
     nicknames = None
     with open("nicknames.csv") as sourceFile:
         nicknames = sourceFile.read().splitlines()
    
    2. Ở đây mỗi phần tử của danh sách là một dòng từ tệp
  3. Đóng một tập tin
  4. Một lần nữa, mở cùng một tệp trong chế độ ghi.
  5. Lặp lại tất cả các dòng từ một danh sách sử dụng hàm for loop và liệt kê (). Hàm
     nicknames = None
     with open("nicknames.csv") as sourceFile:
         nicknames = sourceFile.read().splitlines()
    
    3 thêm một bộ đếm vào một điều có thể (chẳng hạn như danh sách, chuỗi) và trả về nó trong việc liệt kê đối tượng. Chúng tôi đã sử dụng đối tượng liệt kê với một vòng lặp để truy cập số dòng
  6. Sử dụng điều kiện IF trong mỗi lần lặp của một vòng để kiểm tra số dòng. Nếu nó khớp với số dòng để xóa, thì don don viết dòng đó vào tệp.
  7. Đóng một tập tin

Example::

Một lần nữa, mở cùng một tệp trong chế độ ghi.how to delete lines from a text file by line number in Python. See the attached file used in the example and an image to show the file’s content for reference.

Hướng dẫn remove data from text file python - xóa dữ liệu khỏi tệp văn bản python
Lặp lại tất cả các dòng từ một danh sách sử dụng hàm for loop và liệt kê (). Hàm
 nicknames = None
 with open("nicknames.csv") as sourceFile:
     nicknames = sourceFile.read().splitlines()
3 thêm một bộ đếm vào một điều có thể (chẳng hạn như danh sách, chuỗi) và trả về nó trong việc liệt kê đối tượng. Chúng tôi đã sử dụng đối tượng liệt kê với một vòng lặp để truy cập số dòng

Sử dụng điều kiện IF trong mỗi lần lặp của một vòng để kiểm tra số dòng. Nếu nó khớp với số dòng để xóa, thì don don viết dòng đó vào tệp.deleting lines 5 and 8.

# list to store file lines
lines = []
# read file
with open(r"E:\demos\files\sample.txt", 'r') as fp:
    # read an store all lines into list
    lines = fp.readlines()

# Write file
with open(r"E:\demos\files\sample.txt", 'w') as fp:
    # iterate each line
    for number, line in enumerate(lines):
        # delete line 5 and 8. or pass any Nth line you want to remove
        # note list index starts from 0
        if number not in [4, 7]:
            fp.write(line)

Mã sau đây hiển thị & nbsp; cách xóa các dòng khỏi tệp văn bản theo số dòng & nbsp; trong python. Xem tệp đính kèm được sử dụng trong ví dụ và hình ảnh để hiển thị nội dung tệp để tham khảo.

First line
Second line
Third line
Fourth line
Sixth line
Seventh line

Note::

Tệp văn bản

Trong ví dụ này, chúng tôi là & nbsp; xóa các dòng 5 và 8.: Don’t use

 nicknames = None
 with open("nicknames.csv") as sourceFile:
     nicknames = sourceFile.read().splitlines()
9 keywords to delete lines from a list and write the same list to file. Because when you delete a line from the list, the item’s index gets changed. So you will no longer be able to delete the correct line.

Mã của chúng tôi đã xóa hai dòng. Đây là dữ liệu hiện tại của một tệp

Hàm

 nicknames = None
 with open("nicknames.csv") as sourceFile:
     nicknames = sourceFile.read().splitlines()
3 thêm một bộ đếm vào một số không thể sử dụng được (chẳng hạn như danh sách, chuỗi) và trả về nó trong đối tượng
 nicknames = None
 with open("nicknames.csv") as sourceFile:
     nicknames = sourceFile.read().splitlines()
5. Chúng tôi đã sử dụng đối tượng
 nicknames = None
 with open("nicknames.csv") as sourceFile:
     nicknames = sourceFile.read().splitlines()
5 với vòng lặp
 nicknames = None
 with open("nicknames.csv") as sourceFile:
     nicknames = sourceFile.read().splitlines()
7 để truy cập số dòng.
 nicknames = None
 with open("nicknames.csv") as sourceFile:
     nicknames = sourceFile.read().splitlines()
3 không tải toàn bộ danh sách trong bộ nhớ, vì vậy đây là một giải pháp hiệu quả. don’t need to open a file twice.

  • Lưu ý: Don Tiết sử dụng từ khóa
     nicknames = None
     with open("nicknames.csv") as sourceFile:
         nicknames = sourceFile.read().splitlines()
    
    9 để xóa các dòng khỏi danh sách và viết cùng một danh sách vào tệp. Bởi vì khi bạn xóa một dòng khỏi danh sách, chỉ mục của mục sẽ được thay đổi. Vì vậy, bạn sẽ không còn có thể xóa đúng dòng.read and write mode (
    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
    
    0)
  • Sử dụng phương thức Seek ()
  • Điều tương tự có thể được thực hiện bằng phương thức Seek () bằng cách thay đổi vị trí con trỏ để chúng tôi không cần phải mở một tệp hai lần.pointer to the start of a file using
    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
    
    1 method
  • Mở tệp trong chế độ đọc và ghi (
    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
    
    0)
  • Đọc tất cả các dòng từ một tệp vào danh sách
  • Di chuyển con trỏ tệp đến đầu tệp bằng phương thức
    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
    
    1

Example::

with open(r"E:\demos\files\sample.txt", 'r+') as fp:
    # read an store all lines into list
    lines = fp.readlines()
    # move file pointer to the beginning of a file
    fp.seek(0)
    # truncate the file
    fp.truncate()

    # start writing lines
    # iterate line and line number
    for number, line in enumerate(lines):
        # delete line number 5 and 8
        # note: list index start from 0
        if number not in [4, 7]:
            fp.write(line)

Cắt ngắn tệp bằng phương pháp 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 2

Lặp lại danh sách bằng cách sử dụng chức năng Loop và

 nicknames = None
 with open("nicknames.csv") as sourceFile:
     nicknames = sourceFile.read().splitlines()
3

Trong mỗi lần lặp viết dòng hiện tại vào tệp. Bỏ qua những số dòng mà bạn muốn xóa.

  • Xóa dòng đầu tiên và cuối cùng của một tệp
  • Để xóa một cách chọn lọc một số nội dung nhất định khỏi tệp, chúng tôi cần sao chép nội dung của tệp ngoại trừ các dòng chúng tôi muốn xóa và viết lại các dòng còn lại vào cùng một tệp.
  • Sử dụng các bước dưới đây để xóa dòng đầu tiên khỏi một tệp.
  • Mở tệp ở chế độ đọc và ghi (
    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
    
    0)
  • Đọc tất cả các dòng từ một tệp
with open(r"E:\demos\files\sample.txt", 'r+') as fp:
    # read an store all lines into list
    lines = fp.readlines()
    # move file pointer to the beginning of a file
    fp.seek(0)
    # truncate the file
    fp.truncate()

    # start writing lines except the first line
    # lines[1:] from line 2 to last line
    fp.writelines(lines[1:])

Di chuyển con trỏ tệp khi bắt đầu tệp bằng phương thức

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
1

Cắt ngắn tệp

First line
Second line
Third line
Fourth line
Sixth line
Seventh line

Viết tất cả các dòng từ một tệp ngoại trừ dòng đầu tiên.

Nick
Maria
James
Chris
Mario
Stephen
Isabella
Ahmed
Julia
Mark
...
0

Đầu ra.

Nick
Maria
James
Chris
Mario
Stephen
Isabella
Ahmed
Julia
Mark
...
1

Trước khi xóa dòng đầu tiên

Nick
Maria
James
Chris
Mario
Stephen
Isabella
Ahmed
Julia
Mark
...
2

Sau khi xóa dòng đầu tiên

Nick
Maria
James
Chris
Mario
Stephen
Isabella
Ahmed
Julia
Mark
...
3

Để xóa các dòng đầu tiên sử dụng Danh sách cắt..

Nếu bạn đang đọc một tệp và don lồng muốn đọc dòng đầu tiên, hãy sử dụng phương pháp dưới đây thay vì xóa một dòng khỏi một tệp.

Sử dụng ví dụ dưới đây để các bước để xóa dòng cuối cùng khỏi tệp

Để xóa n dòng cuối cùng, sử dụng danh sách cắt.

Steps::

  • Nick
    Maria
    James
    Chris
    Mario
    Stephen
    Isabella
    Ahmed
    Julia
    Mark
    ...
    
    4
  • Xóa các dòng khớp với văn bản (chuỗi)
  • Giả sử các tệp chứa hàng trăm dòng và bạn muốn xóa các dòng khớp với chuỗi/văn bản đã cho. Hãy cùng xem cách xóa các dòng khớp với văn bản đã cho (khớp chính xác).

Đọc tệp vào một danh sách: Delete lines that match the given text (exact match)

Nick
Maria
James
Chris
Mario
Stephen
Isabella
Ahmed
Julia
Mark
...
5

Mở cùng một tệp trong chế độ ghisingle loop so it will be much faster.

Nick
Maria
James
Chris
Mario
Stephen
Isabella
Ahmed
Julia
Mark
...
6

Lặp lại một danh sách và ghi từng dòng vào một tệp ngoại trừ các dòng khớp với chuỗi đã cho.

Ví dụ 1: Xóa các dòng khớp với văn bản đã cho (khớp chính xác)

Example::

Nick
Maria
James
Chris
Mario
Stephen
Isabella
Ahmed
Julia
Mark
...
7

Ngoài ra, bạn có thể đạt được nó bằng cách sử dụng vòng lặp duy nhất để nó sẽ nhanh hơn nhiều.

Xóa các dòng chứa một từ cụ thểtime‘.

Example::

Nick
Maria
James
Chris
Mario
Stephen
Isabella
Ahmed
Julia
Mark
...
8

Chúng tôi có thể phải xóa các dòng khỏi một tệp chứa một từ khóa hoặc thẻ cụ thể trong một số trường hợp. Hãy cùng xem ví dụ để xóa các dòng khỏi tệp có chứa một chuỗi cụ thể ở bất cứ đâu trong dòng.

Xóa các dòng bắt đầu bằng từ/chuỗi cụ thể

Nick
Maria
James
Chris
Mario
Stephen
Isabella
Ahmed
Julia
Mark
...
9

Để xóa tất cả các dòng trong một tệp và xóa tệp, chúng ta có thể sử dụng phương thức cắt ngắn () trên đối tượng tệp. Phương thức cắt () loại bỏ tất cả các dòng khỏi một tệp và đặt con trỏ tệp đến đầu tệp.

 nicknames = None
 with open("nicknames.csv") as sourceFile:
     nicknames = sourceFile.read().splitlines()
0

Làm thế nào để bạn xóa văn bản trong một tệp txt?

Mở tài liệu trong Microsoft Word hoặc một trình xử lý văn bản khác. Di chuyển con trỏ chuột đến đầu dòng văn bản bạn muốn xóa. Nhấn và giữ nút chuột bên trái, sau đó kéo chuột sang phải cho đến khi toàn bộ dòng văn bản được tô sáng. Nhấn Backspace hoặc Xóa để xóa dòng văn bản.

Làm thế nào để bạn xóa văn bản trong Python?

Python loại bỏ ký tự khỏi một chuỗi - cách xóa các ký tự khỏi chuỗi.Trong Python, bạn có thể sử dụng các phương thức thay thế () và dịch () để chỉ định ký tự nào bạn muốn xóa khỏi chuỗi và trả về kết quả chuỗi được sửa đổi mới.use the replace() and translate() methods to specify which characters you want to remove from a string and return a new modified string result.

Làm thế nào để bạn xóa dữ liệu trong Python?

Cách xóa một phần tử khỏi danh sách bằng phương thức Remove () trong Python.Để xóa một phần tử khỏi danh sách bằng phương thức Remove (), chỉ định giá trị của phần tử đó và chuyển nó dưới dạng đối số cho phương thức.Xóa () sẽ tìm kiếm danh sách để tìm và xóa nó.specify the value of that element and pass it as an argument to the method. remove() will search the list to find it and remove it.

Làm thế nào để bạn xóa một ký tự khỏi một tệp trong Python?

Python loại bỏ ký tự khỏi chuỗi bằng cách sử dụng thay thế (), chúng ta có thể sử dụng chức năng String thay thế () để thay thế một ký tự bằng một ký tự mới.Nếu chúng tôi cung cấp một chuỗi trống làm đối số thứ hai, thì ký tự sẽ bị xóa khỏi chuỗi.using replace() We can use string replace() function to replace a character with a new character. If we provide an empty string as the second argument, then the character will get removed from the string.