Làm cách nào để xóa văn bản khỏi tệp văn bản trong python?

Trong bài viết này, chúng tôi sẽ chỉ cho bạn cách xóa một dòng cụ thể/cụ thể khỏi tệp văn bản bằng python

Giả sử chúng tôi đã lấy một tệp văn bản có tên TextFile. txt bao gồm một số văn bản ngẫu nhiên. Chúng tôi sẽ xóa một dòng cụ thể [ví dụ dòng 2] khỏi tệp văn bản

Tệp văn bản. txt

Good Morning
This is Tutorials Point sample File
Consisting of Specific
source codes in Python,Seaborn,Scala
Summary and Explanation
Welcome everyone
Learn with a joy

thuật toán

Sau đây là Thuật toán/các bước cần tuân thủ để thực hiện tác vụ mong muốn -

  • Tạo một biến để lưu đường dẫn của tệp văn bản

  • Sử dụng hàm open[][mở một tệp và kết quả là trả về một đối tượng tệp] để mở tệp văn bản ở chế độ chỉ đọc bằng cách chuyển tên tệp và chế độ làm đối số cho nó [Ở đây “r” biểu thị chỉ đọc

with open[inputFile, 'r'] as filedata:
  • Sử dụng hàm readlines[] [trả về một danh sách với mỗi dòng trong tệp được biểu thị dưới dạng một mục danh sách. Để giới hạn số dòng được trả về, hãy sử dụng đối số gợi ý. Không còn dòng nào được trả về nếu tổng số byte được trả về vượt quá số lượng đã chỉ định] để lấy danh sách các dòng của tệp văn bản đầu vào đã cho

file.readlines[hint]
  • Tạo một biến [giữ số dòng] và khởi tạo giá trị của nó thành 1

  • Sử dụng hàm open[][mở một tệp và kết quả là trả về một đối tượng tệp] để mở tệp văn bản đã cho ở chế độ ghi bằng cách chuyển tên tệp và chế độ làm đối số cho nó [Ở đây “w” đại diện cho chế độ ghi]

with open[inputFile, 'w'] as filedata:
  • Duyệt qua từng dòng của tệp bằng vòng lặp for

  • Nhập số dòng cần xóa dưới dạng đầu vào động bằng cách sử dụng hàm input[] [Hàm input[] đọc một dòng từ đầu vào [từ người dùng], chuyển đổi nó thành một chuỗi bằng cách loại bỏ dòng mới ở cuối và trả về nó. Khi gặp phải EOF, một ngoại lệ EOFError sẽ được đưa ra] và nhập truyền nó thành một số nguyên bằng hàm int[][chuyển đổi thành một số nguyên]

  • Sử dụng câu lệnh điều kiện if, xác định xem chỉ mục dòng [số dòng] có khác với số dòng xóa đã cho hay không

  • Nếu điều kiện là đúng, thì hãy sử dụng hàm write[] [ghi một văn bản đã chỉ định vào một tệp. Văn bản được cung cấp sẽ được chèn tùy thuộc vào chế độ tệp và vị trí luồng] để ghi dòng tương ứng đó vào một tệp

  • Tăng giá trị của giá trị chỉ mục dòng [số dòng] lên 1

  • In một số văn bản ngẫu nhiên nếu dòng cụ thể đã được xóa thành công

  • Mở lại tệp đầu vào ở chế độ đọc bằng hàm open[] để in nội dung tệp sau khi xóa dòng cụ thể đã cho

  • Duyệt qua từng dòng của tệp bằng vòng lặp for

  • In từng dòng của tệp văn bản

  • Đóng tệp đầu vào bằng hàm close[] [dùng để đóng tệp đã mở]

Thí dụ

Chương trình sau để xóa một dòng đã cho khỏi tệp văn bản và in nội dung tệp kết quả sau khi xóa dòng đó -

đầu ra

Khi thực thi, chương trình trên sẽ tạo đầu ra sau -

Enter the line number to be deleted = 2
Line 2 is deleted successfully

File Content After Deletion :
Good Morning
Consisting of Specific
source codes in Python,Seaborn,Scala
Summary and Explanation
Welcome everyone
Learn with a joy

Chúng tôi đã cung cấp cho chương trình của mình một tệp văn bản chứa một số nội dung ngẫu nhiên và sau đó mở nó ở chế độ đọc. Chúng tôi đã tạo một biến để lưu trữ số dòng hiện tại và khởi tạo nó thành 1, số dòng bắt đầu. Chúng tôi duyệt qua tệp cho đến khi đến cuối, sau đó kiểm tra xem liệu số người dùng nhập vào có tương đương với số dòng sẽ bị xóa không. Nếu sai ta không cần xóa bỏ dòng đó mà ghi vào file. Thay vì xóa dòng đã chỉ định, chúng tôi thêm các dòng còn lại vào tệp, do đó dòng bị xóa không xuất hiện trong tệp kết quả. Đối với mỗi dòng, giá trị của số dòng được tăng thêm một

Trong bài viết này, chúng ta đã tìm hiểu về cách xóa một dòng cụ thể khỏi tệp văn bản và lưu các dòng còn lại trong cùng một bài viết. Cùng với đó chúng ta đã học về cách duyệt toàn bộ tệp văn bản từ đầu đến cuối cũng như cách đọc và ghi dữ liệu vào tệp văn bản

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 dòng #5 và #12

Sau khi đọc bài viết này, bạn sẽ học đượ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à dòng cuối cùng khỏi tệp văn bản

Mục lục

  • Xóa các dòng khỏi tệp theo số dòng
    • Sử dụng phương thức seek[]
  • Xóa dòng đầu tiên và dòng cuối cùng của tệp
  • Xóa các dòng khớp với một văn bản [chuỗi]
  • Xóa các dòng có chứa một từ cụ thể
  • Xóa các dòng bắt đầu bằng từ/chuỗi cụ thể
  • Xóa văn bản cụ thể khỏi tệp văn bản
  • Xóa tất cả các dòng khỏi một tệp

Xóa các dòng khỏi 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 pháp
    First line
    Second line
    Third line
    Fourth line
    Sixth line
    Seventh line
    6. ở đâ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 bằng cách sử dụng hàm for loop và enumerate[]. Hàm
    First line
    Second line
    Third line
    Fourth line
    Sixth line
    Seventh line
    7 thêm bộ đếm vào một lần lặp [chẳng hạn như danh sách, chuỗi] và trả về nó trong đối tượng liệt kê. Chúng tôi đã sử dụng đối tượng liệt kê với vòng lặp for để truy cập số dòng
  6. Sử dụng điều kiện if trong mỗi lần lặp của vòng lặp để kiểm tra số dòng. Nếu trùng với số dòng cần xóa thì không ghi dòng đó vào file
  7. Đóng một tập tin

Thí dụ

Đoạn mã sau cho biết cách xóa các dòng khỏi tệp văn bản theo số dòng 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 của tệp để tham khảo

tập tin văn bản

Trong ví dụ này, chúng tôi đang xóa dòng 5 và 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ã của chúng tôi đã xóa hai dòng. Đây là một dữ liệu hiện tại của một tập tin

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

Ghi chú

Hàm

First line
Second line
Third line
Fourth line
Sixth line
Seventh line
7 thêm bộ đếm vào một lần lặp [chẳng hạn như danh sách, chuỗi] và trả về nó trong đối tượng
First line
Second line
Third line
Fourth line
Sixth line
Seventh line
9. Chúng tôi đã sử dụng đối tượng
First line
Second line
Third line
Fourth line
Sixth line
Seventh line
9 với vòng lặp
with open[inputFile, 'r'] as filedata:
21 để truy cập số dòng.
First line
Second line
Third line
Fourth line
Sixth line
Seventh line
7 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ả

Ghi chú. Không sử dụng từ khóa

with open[inputFile, 'r'] as filedata:
23 để xóa các dòng khỏi danh sách và ghi chính 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ẽ bị thay đổi. Vì vậy, bạn sẽ không còn có thể xóa đúng dòng

Sử dụng phương thức seek[]

Điều tương tự cũng có thể được thực hiện bằng cách sử dụng phương thức seek[] bằng cách thay đổi vị trí con trỏ để chúng ta không cần mở tệp hai lần

  • Mở tệp ở chế độ đọc và ghi [
    with open[inputFile, 'r'] as filedata:
    24]
  • Đọ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 pháp
    with open[inputFile, 'r'] as filedata:
    25
  • Cắt bớt tệp bằng phương pháp
    with open[inputFile, 'r'] as filedata:
    26
  • Lặp lại danh sách bằng vòng lặp và hàm
    First line
    Second line
    Third line
    Fourth line
    Sixth line
    Seventh line
    7
  • Trong mỗi lần lặp, ghi dòng hiện tại vào tệp. Bỏ qua những số dòng mà bạn muốn xóa

Thí dụ

with open[inputFile, 'r'] as filedata:
2

Xóa dòng đầu tiên và dòng cuối cùng của tệp

Để xóa có chọn lọc một số nội dung khỏi tệp, chúng ta cần sao chép nội dung của tệp ngoại trừ những dòng chúng tôi muốn xóa và ghi 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 tệp

  • Mở tệp ở chế độ đọc và ghi [______124]
  • Đọc tất cả các dòng từ một tập tin
  • Di chuyển con trỏ tệp ở đầu tệp bằng phương pháp
    with open[inputFile, 'r'] as filedata:
    25
  • Cắt bớt tập tin
  • Viết tất cả các dòng từ một tệp ngoại trừ dòng đầu tiên
file.readlines[hint]
2

đầu ra

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

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

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

file.readlines[hint]
4

Để xóa N dòng đầu tiên, hãy sử dụng danh sách cắt

file.readlines[hint]
5

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

file.readlines[hint]
6

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

file.readlines[hint]
7

Để xóa N dòng cuối cùng, hãy sử dụng danh sách cắt

file.readlines[hint]
8

Xóa các dòng khớp với một 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 xem cách xóa các dòng khớp với văn bản đã cho [khớp chính xác]

bước

  • Đọc tệp vào một danh sách
  • Mở cùng một tệp trong chế độ ghi
  • Lặp lại một danh sách và ghi từng dòng vào một tệp ngoại trừ những 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]

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

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

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

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

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

Thí dụ

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

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

Tìm hiểu cách xóa các dòng khỏi tệp bắt đầu bằng một từ cụ thể. Trong ví dụ sau, chúng tôi sẽ xóa các dòng bắt đầu bằng từ ‘thời gian‘

Thí dụ

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

Xóa văn bản cụ thể khỏi tệp văn bản

Cũng có thể xảy ra trường hợp bạn muốn xóa một chuỗi cụ thể khỏi một tệp chứ không phải dòng chứa chuỗi đó. Hãy xem ví dụ tương tự

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

Xóa tất cả các dòng khỏi một tệp

Để xóa tất cả các dòng trong một tệp và làm trống tệp, chúng ta có thể sử dụng phương thức truncate[] trên đối tượng tệp. Phương thức truncate[] xóa tất cả các dòng khỏi tệp và đặt con trỏ tệp về đầu tệp

Chủ Đề