Thay thế toàn bộ dòng trong tệp python
Việc thay thế chuỗi được thực hiện đơn giản nhất bằng phương thức Show #!/usr/bin/env python import os, sys nargs = len(sys.argv) if not 3 <= nargs <= 5: print "usage: %s search_text replace_text [infile [outfile]]" % \ os.path.basename(sys.argv[0]) else: stext = sys.argv[1] rtext = sys.argv[2] input = sys.stdin output = sys.stdout if nargs > 3: input = open(sys.argv[3]) if nargs > 4: output = open(sys.argv[4], 'w') for s in input.xreadlines( ): output.write(s.replace(stext, rtext)) output.close( ) input.close( ) Công thức này thực sự đơn giản, nhưng đó là điều tuyệt vời của nó—tại sao phải làm những thứ phức tạp khi những thứ đơn giản là đủ? . Tập lệnh xem xét các đối số của nó để xác định văn bản tìm kiếm, văn bản thay thế, tệp đầu vào (mặc định là đầu vào tiêu chuẩn) và tệp đầu ra (mặc định là đầu ra tiêu chuẩn). Sau đó, nó lặp qua từng dòng của tệp đầu vào, ghi vào tệp đầu ra một bản sao của dòng đó với phép thay thế được thực hiện trên đó. Đó là tất cả. Để chính xác, nó sẽ đóng cả hai tệp ở cuối Miễn là nó nằm vừa vặn trong bộ nhớ ở hai bản sao (một trước và một sau khi thay thế, vì các chuỗi là bất biến), chúng ta có thể, với một số mức tăng tốc, hoạt động trên toàn bộ nội dung của tệp đầu vào cùng một lúc thay vì lặp lại. Với các PC ngày nay thường có bộ nhớ 256 MB, việc xử lý các tệp có dung lượng lên tới khoảng 100 MB không phải là vấn đề. Chỉ cần thay thế vòng lặp output.write(input.read( ).replace(stext, rtext)) Như bạn có thể thấy, điều đó thậm chí còn đơn giản hơn vòng lặp được sử dụng trong công thức Nếu bạn gặp khó khăn với phiên bản Python cũ hơn, chẳng hạn như 1. 5. 2, bạn vẫn có thể sử dụng công thức này. Thay đổi câu lệnh import os, sys, string và thay đổi hai dòng cuối cùng của công thức thành for s in input.readlines( ): output.write(string.replace(s, stext, rtext)) Phương thức Bài viết này đề cập đến một số chương trình trong Python thay thế một dòng cụ thể từ một tệp. Dưới đây là danh sách các chương trình được đề cập trong bài viết này
Những việc cần làm trước Chương trìnhVì chương trình được cung cấp bên dưới hoạt động trên tệp, do đó phải có tệp trước khi thực hiện chương trình được cung cấp bên dưới. Do đó, hãy tạo một trình giải mã tên tệp. txt và đặt nội dung sau This is a text file. The name of this file is codescracker.txt You are practicing Python by example here bên trong tập tin đó. Lưu tệp bên trong thư mục hiện tại. Ở đây thư mục hiện tại có nghĩa là thư mục lưu mã nguồn của chương trình. Đây là ảnh chụp nhanh của tệp được lưu trữ trong thư mục hiện tại và đây là ảnh chụp nhanh của tệp đã mở có tên là Codecracker. txt Bây giờ hãy tiếp tục và tạo chương trình để thao tác trên tệp này để thay thế bất kỳ dòng nào bằng dòng mới Lưu ý - Để thay thế bất kỳ dòng nào, bạn phải nhập số dòng rồi nhập nội dung để thay thế số dòng đó bằng nội dung đã cho Thay thế dòng cụ thể từ tệpCâu hỏi đặt ra là viết một chương trình Python thay thế bất kỳ dòng cụ thể nào từ một tệp. Tên của tệp, số dòng và nội dung mới cho số dòng phải được người dùng nhập vào thời gian chạy. Chương trình đưa ra dưới đây là câu trả lời cho câu hỏi này print("Enter the name of file: ") filename = input() filehandle = open(filename, "r") listOfLines = filehandle.readlines() filehandle.close() print("Enter line number to replace for: ") lineNo = int(input()) print("Enter new content for line number", lineNo, ": ") newline = input() listOfLines[lineNo] = newline filehandle = open(filename, "w") filehandle.writelines(listOfLines) filehandle.close() print("\nLine replaced successfully!") Lưu ý - Sử dụng chỉ mục trong khi nhập số dòng. Nghĩa là, nếu bạn muốn thay thế dòng đầu tiên của tệp văn bản, thì hãy nhập 0 làm đầu vào. Nếu bạn muốn thay thế dòng thứ hai, hãy nhập 1, v.v. Ảnh chụp nhanh được cung cấp bên dưới cho thấy đầu ra ban đầu được tạo bởi chương trình Python ở trên. Chúng ta hãy có một cái nhìn về nó Bây giờ cung cấp các đầu vào, người giải mã. txt làm tên tệp, 2 làm số dòng và Đây là chương trình ví dụ về Python. như nội dung để thay thế bằng. Đây là mẫu chạy của nó với chính xác các đầu vào này Bây giờ nếu bạn sẽ thấy nội dung của tệp, trình bẻ mã. txt, dòng thứ ba của nó sẽ được thay thế bằng dòng mới như đã nhập ở trên. Đây là ảnh chụp nhanh mới của cùng một tệp Thay thế bất kỳ Dòng nào trong Tệp và In Nội dung MớiTrong chương trình này, tôi đã triển khai mã in cả nội dung cũ và mới của tệp sau khi thay thế dòng. Vì nó trông tương tác hơn print("Enter File's Name: ", end="") fname = input() fhandle = open(fname, "r") lines = fhandle.readlines() fhandle.close() print("Enter line number to replace it: ", end="") lno = int(input()) print("Enter new content for line no.", lno, "\b: ", end="") nline = input() print("\n------Old Content-------") content = "" content = content.join(lines) print(content) lines[lno] = nline fhandle = open(fname, "w") fhandle.writelines(lines) fhandle.close() print("\n-----New Content--------") content = "" content = content.join(lines) print(content) Đây là lần chạy mẫu của nó với đầu vào của người dùng, trình giải mã. txt làm tên tệp, 2 làm số dòng, Đây là một chương trình. như dòng mới để thay thế bằng |