Xóa dòng đầu tiên của tập tin 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ả 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 số đầu vào của người dùng 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 vì Python không cung cấp phương thức trực tiếp để xóa một dòng cụ thể trong một tệp, nên chúng ta cần phải tìm cách tiếp cận của riêng mình

Trong hướng dẫn này, chúng tôi sẽ đề cập đến một số cách xóa dòng khỏi tệp văn bản bằng Python. Chúng ta sẽ xem cách xóa các dòng dựa trên vị trí của chúng trong tài liệu và cách xóa nội dung khớp với một chuỗi

Chúng tôi cũng sẽ đề cập đến các ví dụ về cách sử dụng logic tùy chỉnh để giải quyết các vấn đề khó khăn hơn. Không thành vấn đề nếu chúng ta đang làm việc với một tệp văn bản đơn giản hay các tệp được phân tách bằng dấu phẩy [CSV] phức tạp hơn, những kỹ thuật này sẽ giúp bạn quản lý dữ liệu của mình

Chúng ta có thể sử dụng Python để xử lý cả tệp lớn và tệp nhỏ theo cách hiệu quả về bộ nhớ

Sử dụng một số để xóa một dòng

Trong ví dụ đầu tiên của chúng tôi, chúng tôi sẽ xem xét xóa một dòng dựa trên vị trí của nó trong tệp. Bắt đầu với danh sách tên được tạo ngẫu nhiên được lưu trên máy tính của chúng tôi, chúng tôi sẽ sử dụng Python để xóa tên khỏi danh sách dựa trên thứ tự xuất hiện trong danh sách

Các tập tin được gọi là tên. txt và nó được lưu trong cùng thư mục với tệp python của chúng tôi. Mục tiêu của chúng tôi là xóa dòng thứ 7 trong tệp.  

Trong Python, chúng ta có thể sử dụng câu lệnh with để mở tệp một cách an toàn. Khi tệp đang mở, chúng tôi sẽ sử dụng phương thức readlines[] để truy xuất danh sách chứa nội dung của tệp

Đó là tất cả để đọc danh sách tên. Tiếp theo, chúng ta sẽ sử dụng một câu lệnh with khác để mở lại tệp, lần này ở chế độ ghi.  

Sử dụng vòng lặp for để lặp qua các dòng của tệp, chúng tôi cũng sử dụng một biến để theo dõi số dòng hiện tại. Khi chúng tôi đến dòng chúng tôi muốn xóa, câu lệnh if đảm bảo chúng tôi bỏ qua dòng

Hãy đi qua các bước một lần nữa

  1. Mở tệp ở chế độ đọc
  2. Đọc nội dung tập tin
  3. Mở tệp ở chế độ ghi
  4. Sử dụng vòng lặp for để đọc từng dòng và ghi vào tệp
  5. Khi đến dòng muốn xóa thì bỏ qua

Bởi vì chúng tôi đang sử dụng câu lệnh Python with để xử lý tệp, nên không cần phải đóng tệp sau khi chúng tôi thực hiện xong. Python chăm sóc điều đó cho chúng tôi

tên. txt
1 Amina,Waelchi
2 Sharon Reynolds
3 Lilian Hane
4 Felicita Howell
5 Sallie Senger
6 Lucile Schuster
7 Emmitt Schuppe
8 Rowena Leffler
9 Hipolito Batz
10 Gia Hill

ví dụ 1. Xóa một dòng dựa trên một số dòng được chỉ định

def remove_line[fileName,lineToSkip]:
    """ Removes a given line from a file """
    with open[fileName,'r'] as read_file:
        lines = read_file.readlines[]

    currentLine = 1
    with open[fileName,'w'] as write_file:
        for line in lines:
            if currentLine == lineToSkip:
                pass
            else:
                write_file.write[line]
	
            currentLine += 1

# call the function, passing the file and line to skip
remove_line["names.txt",7]

Bằng cách gói logic của chúng ta trong một hàm, chúng ta có thể dễ dàng xóa một dòng khỏi tệp bằng cách gọi hàm remove_lines[] và chuyển tên của tệp cũng như số dòng mà chúng ta muốn xóa

Nếu chúng ta dự định sử dụng một khối mã Python nhiều lần, thì tốt nhất là bọc nó trong một hàm. Làm như vậy sẽ giúp chúng ta tiết kiệm thời gian và năng lượng

Xóa một dòng bằng cách khớp nội dung

Chúng tôi đã xem cách xóa nội dung khỏi tệp dựa trên vị trí dòng của nó. Bây giờ chúng ta sẽ xem cách xóa một dòng khớp với một chuỗi đã cho

Chúng tôi có một danh mục các bài đồng dao, nhưng ai đó đã chơi xấu chúng tôi một chút. Thật trớ trêu, họ đã thêm dòng "Dòng này không thuộc về" vào tệp của chúng tôi

Không cần phải hoảng sợ. Chúng ta có thể sử dụng Python để dễ dàng hoàn tác trò nghịch ngợm.  

Trong mã Python của chúng tôi, chúng tôi sẽ bắt đầu bằng cách đọc tệp có tên ity_bitsy. txt và lưu trữ nội dung của nó trong một biến có tên là lines

Giống như trong ví dụ trước, chúng tôi sẽ sử dụng Python với các câu lệnh để mở tệp. Để tìm dòng phù hợp, chúng ta cần xóa các ký tự xuống dòng mà readlines[] gắn vào cuối mỗi chuỗi

Chúng ta có thể xóa ký tự xuống dòng bằng hàm strip[]. Đây là một chức năng tích hợp giúp xóa các ký tự ở đầu hoặc cuối chuỗi

Khi tìm thấy nội dung phù hợp, chúng tôi sẽ sử dụng câu lệnh if để chuyển nội dung đó qua, loại bỏ nội dung đó khỏi tệp cũ một cách hiệu quả

itsy_bitsy. txt
Con nhện nhỏ bé xíu trèo lên vòi rồng.
Mưa đổ xuống
Và cuốn trôi con nhện.
Mặt trời ló dạng
Dòng này không thuộc về
Và làm khô cả mưa
And the itsy bitsy spider climbed up the spout again.

ví dụ 2. Khớp nội dung và xóa nội dung khỏi tệp

with open["itsy_bitsy.txt", 'r'] as file:
    lines = file.readlines[]

# delete matching content
content = "This line doesn't belong"
with open["itsy_bitsy.txt", 'w'] as file:
    for line in lines:
        # readlines[] includes a newline character
        if line.strip["\n"] != content:
            file.write[line]

Sử dụng Logic tùy chỉnh để xóa một dòng trong Python

Khi xử lý dữ liệu tệp, chúng tôi thường cần các giải pháp tùy chỉnh phù hợp để đáp ứng nhu cầu của mình. Trong các ví dụ sau, chúng ta sẽ khám phá cách sử dụng logic tùy chỉnh để giải quyết nhiều vấn đề về dữ liệu

Bằng cách điều chỉnh các giải pháp của chúng tôi, có thể giải quyết các vấn đề khó khăn hơn. Ví dụ: điều gì sẽ xảy ra nếu chúng tôi muốn xóa một dòng khỏi tệp nhưng chỉ biết một phần của nó?

Ngay cả khi chúng ta chỉ biết một từ duy nhất, chúng ta có thể sử dụng Python để tìm dòng cần xóa. Bằng cách tận dụng các phương thức tích hợp sẵn của Python, chúng ta sẽ xem cách giải quyết các thách thức tùy chỉnh bằng mã Python

Xóa một dòng bằng một chuỗi cụ thể

Trong bài tập tiếp theo, chúng ta sẽ xem cách xóa một dòng chứa một phần của chuỗi. Dựa trên kiến ​​thức thu được từ các ví dụ trước, có thể xóa một dòng chứa chuỗi con đã cho

Trong Python, phương thức find[] có thể được sử dụng để tìm kiếm một chuỗi cho một chuỗi con. Nếu chuỗi chứa chuỗi con, hàm trả về một chỉ số đại diện cho vị trí của nó. Nếu không, phương thức trả về -1

Trong một tệp văn bản có tên là báo cáo. txt, chúng tôi có một danh sách các câu được tạo ngẫu nhiên. Chúng ta cần loại bỏ bất kỳ câu nào chứa chuỗi con đã cho

Bằng cách sử dụng find[], chúng tôi sẽ biết liệu một dòng có chứa chuỗi mà chúng tôi đang tìm kiếm hay không. Nếu có, chúng tôi sẽ xóa nó khỏi tệp

Đây là cú pháp sử dụng find[]

mystring.find[substring]

câu lệnh. txt
Anh ấy không chú ý đến cảnh báo về quả chuối.
Bạn tôi mang táo ra chợ.
Cô ấy mua một trang trại trồng đào.
Có một vườn nho xinh xắn bên kia những ngọn đồi.
Cô ấy cực kỳ thích thú với chiếc xe mới của mình.

ví dụ 3. Xóa một dòng chứa một chuỗi đã cho

________số 8

Xóa dòng ngắn nhất trong tệp

Hãy cùng xem lại câu lệnh. txt. Một số thay đổi đã được thực hiện.

câu lệnh. txt
Anh ấy không chú ý đến cảnh báo về Banana.
Bạn tôi mang táo ra chợ.
Cô ấy mua một trang trại trồng đào.
Anh ta tuyên bố đã nhìn thấy UFO.
Có một vườn nho xinh xắn bên kia những ngọn đồi.
Có rất ít thứ để ăn trên đảo ngoài dừa.

Chúng tôi đã thêm một số dòng mới. Lần này, chúng ta cần xóa dòng ngắn nhất trong tài liệu. Chúng ta có thể làm điều này bằng cách sử dụng phương thức len[] để tìm độ dài của mỗi dòng.

Bằng cách so sánh độ dài của các dòng, bạn có thể tìm ra dòng ngắn nhất. Sau đó, chúng ta có thể sử dụng câu lệnh with open và xóa dòng khỏi tệp.

Ví dụ 4. Xóa dòng ngắn nhất trong tệp bằng phương thức len[]

# remove the shortest line from statements.txt
with open["statements.txt",'r'] as read_file:
    lines = read_file.readlines[]

shortest = 1000 # used to compare line length
lineToDelete = "" # the line we want to remove

for line in lines:
    if len[line] < shortest:
        shortest = len[line]
        lineToDelete = line

with open["statements.txt",'w'] as write_file:
    for line in lines:
        if line == lineToDelete:
            pass
        else:
            write_file.write[line]

Bản tóm tắt

Với bài đăng này, chúng tôi đã đề cập đến một số phương pháp xóa dòng khỏi tệp trong Python. Chúng tôi đã thấy rằng chúng tôi có thể xóa các dòng dựa trên vị trí của chúng trong tệp bằng cách sử dụng vòng lặp for

Chúng tôi cũng có thể xóa các tệp khớp với nội dung bằng cách so sánh các chuỗi, bằng toán tử == hoặc bằng cách sử dụng phương thức find[]

Đây chỉ là một số cách người ta có thể xóa các dòng khỏi tệp trong Python

bài viết liên quan

Nếu bạn muốn tìm hiểu thêm về cách làm việc với chuỗi và dữ liệu tệp trong Python, hãy truy cập vào các liên kết bên dưới

  • Tham gia chuỗi với nối chuỗi Python
  • Cách sử dụng từ điển Python để quản lý dữ liệu tốt hơn
  • Sử dụng hiểu danh sách Python để hợp lý hóa mã của bạn

Có liên quan

Đào tạo Python được đề xuất

Khóa học. Python 3 cho người mới bắt đầu

Hơn 15 giờ nội dung video với hướng dẫn có hướng dẫn cho người mới bắt đầu. Tìm hiểu cách tạo các ứng dụng trong thế giới thực và nắm vững kiến ​​thức cơ bản

Chủ Đề