Làm cách nào để bạn tìm thấy dòng trong tệp văn bản trong python?

Một cách khác để đạt được điều tương tự là sử dụng vòng lặp for. Trong mỗi lần lặp, bạn có thể đọc từng dòng của đối tượng

with open["data_file.txt"] as f:
    content_list = f.readlines[]

# print the list
print[content_list]

# remove new line characters
content_list = [x.strip[] for x in content_list]
print[content_list]
0 và lưu trữ nó trong
with open["data_file.txt"] as f:
    content_list = f.readlines[]

# print the list
print[content_list]

# remove new line characters
content_list = [x.strip[] for x in content_list]
print[content_list]
1 như trong ví dụ trên

Đọc tệp là một nhiệm vụ cần thiết trong bất kỳ ngôn ngữ lập trình nào. Cho dù đó là tệp cơ sở dữ liệu, hình ảnh hay nhật ký trò chuyện, khả năng đọc và ghi tệp giúp nâng cao đáng kể những gì chúng ta có thể làm với Python

Trước khi có thể tạo trang web hoặc trình đọc sách nói tự động, chúng ta cần nắm vững kiến ​​thức cơ bản. Rốt cuộc, không ai từng chạy trước khi họ bò

Để làm phức tạp vấn đề, Python cung cấp một số giải pháp để đọc tệp. Chúng tôi sẽ đề cập đến các quy trình phổ biến nhất để đọc từng dòng tệp trong Python. Sau khi bạn đã giải quyết các vấn đề cơ bản về đọc tệp trong Python, bạn sẽ chuẩn bị tốt hơn cho những thách thức phía trước

Bạn sẽ rất vui khi biết rằng Python cung cấp một số chức năng để đọc, viết và tạo tệp. Các chức năng này đơn giản hóa việc quản lý tệp bằng cách xử lý một số công việc cho chúng tôi ở hậu trường

Chúng ta có thể sử dụng nhiều hàm Python này để đọc từng dòng tệp

Đọc từng dòng tệp bằng phương thức readlines[]

Cách tiếp cận đầu tiên của chúng tôi để đọc tệp bằng Python sẽ là cách ít kháng cự nhất. phương thức readlines[]. Phương pháp này sẽ mở một tệp và chia nội dung của nó thành các dòng riêng biệt.  

Phương thức này cũng trả về danh sách tất cả các dòng trong tệp. Chúng ta có thể sử dụng readlines[] để đọc nhanh toàn bộ tệp

Ví dụ: giả sử chúng tôi có một tệp chứa thông tin cơ bản về nhân viên tại công ty của chúng tôi. Chúng tôi cần đọc tệp này và làm gì đó với dữ liệu

nhân viên. txt
Tên. Marcus Gaye
Tuổi. 25
Nghề nghiệp. Nhà phát triển web

Tên. Sally Rain
tuổi. 31
Nghề nghiệp. Lập trình viên cấp cao

ví dụ 1. Sử dụng readlines[] để đọc một tập tin

# open the data file
file = open["employees.txt"]
# read the file as a list
data = file.readlines[]
# close the file
file.close[]

print[data]

đầu ra

['Name: Marcus Gaye\n', 'Age: 25\n', 'Occupation: Web Developer\n', '\n', 'Name: Sally Rain\n', 'age: 31\n', 'Occupation: Senior Programmer\n']

đường đọc [] so với đường đọc []

Không giống như đối tác của nó, phương thức readline[] chỉ trả về một dòng duy nhất từ ​​một tệp. Phương thức realine[] cũng sẽ thêm một ký tự dòng mới vào cuối chuỗi

Với phương thức readline[], chúng ta cũng có tùy chọn chỉ định độ dài cho dòng trả về. Nếu kích thước không được cung cấp, toàn bộ dòng sẽ được đọc

Xét tệp văn bản sau.

wise_owl. txt
Một con cú già khôn ngoan sống trong một cây sồi.
Càng xem nhiều anh ấy càng ít nói.
Anh ấy càng ít nói thì càng được nghe nhiều.
Tại sao tất cả chúng ta không được như chú chim già khôn ngoan đó?

Chúng ta có thể sử dụng readline[] để lấy dòng đầu tiên của tài liệu văn bản. Không giống như readlines[], chỉ một dòng duy nhất sẽ được in ra khi chúng ta sử dụng phương thức readline[] để đọc tệp

ví dụ 2. Đọc một dòng với phương thức readline[]

file = open["wise_owl.txt"]
# get the first line of the file
line1 = file.readline[]
print[line1]
file.close[]

đầu ra

A wise old owl lived in an oak.	

Phương thức readline[] chỉ truy xuất một dòng văn bản. Sử dụng readline[] nếu bạn cần đọc tất cả các dòng cùng một lúc

file = open["wise_owl.txt"]
# store all the lines in the file as a list
lines = file.readlines[]
print[lines]
file.close[]

đầu ra

[‘Một con cú già khôn ngoan sống trong một cây sồi. \n’, ‘Càng xem anh ấy càng ít nói. \n’, ‘Anh ấy càng nói ít anh ấy càng nghe nhiều. \n', “Tại sao tất cả chúng ta không thể giống như con chim già khôn ngoan đó?\n”]

Sử dụng vòng lặp While để đọc tệp

Cũng có thể đọc một tệp bằng các vòng lặp. Sử dụng cùng mộtwise_owl. txt mà chúng ta đã tạo ở phần trước, chúng ta có thể đọc mọi dòng trong tệp bằng vòng lặp while

ví dụ 3. Đọc tệp bằng vòng lặp while và readline[]

file = open["wise_owl.txt",'r']
while True:
    next_line = file.readline[]

    if not next_line:
        break;
    print[next_line.strip[]]

file.close[]

đầu ra

Một con cú già khôn ngoan sống trong một cây sồi.
Càng xem nhiều anh ấy càng ít nói.
Càng ít nói, anh ấy càng được nghe nhiều.
Tại sao tất cả chúng ta không được như chú chim già khôn ngoan đó?

Cẩn thận với các vòng lặp vô hạn

Một lời cảnh báo khi làm việc với các vòng lặp while theo thứ tự. Hãy cẩn thận để thêm trường hợp kết thúc cho vòng lặp, nếu không bạn sẽ kết thúc vòng lặp mãi mãi. Xem xét ví dụ sau

________số 8

Thực thi mã này sẽ khiến Python rơi vào vòng lặp vô hạn, in ra “Ngày con rắn” cho đến hết thời gian. Khi viết mã như thế này, luôn cung cấp cách thoát khỏi vòng lặp.  

Nếu bạn thấy rằng mình đã vô tình thực hiện một vòng lặp vô hạn, bạn có thể thoát nó trong terminal bằng cách nhấn Control+C trên bàn phím

Đọc một đối tượng tệp trong Python

Cũng có thể đọc một tệp bằng Python bằng vòng lặp for. Ví dụ: khách hàng của chúng tôi đã cung cấp cho chúng tôi danh sách địa chỉ của những khách hàng trước đây. Chúng ta cần đọc dữ liệu bằng Python

Đây là danh sách khách hàng

address_list. txt
Bobby Dylan
111 Longbranch Ave.
Houston, TX 77016

Sam Garfield
9805 Border Rd.
New Brunswick, NJ 08901

Penny Lane
408 2nd Lane
Lindenhurst, NY 11757

Marcus Gaye
622 Shub Farm St.
Rockledge, FL 32955

Prudence Brown
66 Ashley Ave.
Chaska, MN 55318

Bất cứ khi nào chúng ta mở một đối tượng tệp, chúng ta có thể sử dụng vòng lặp for để đọc nội dung của nó bằng từ khóa in. Với từ khóa in, chúng ta có thể lặp qua các dòng của tệp

Ví dụ 4. Sử dụng vòng lặp for để đọc các dòng trong tệp

# open the file 
address_list = open["address_list.txt",'r']

for line in address_list:
    print[line.strip[]]

address_list.close[]

Thật không may, giải pháp này sẽ không hoạt động cho khách hàng của chúng tôi. Điều rất quan trọng là dữ liệu ở dạng danh sách Python. Chúng tôi sẽ cần chia tệp thành các địa chỉ riêng biệt và lưu trữ chúng trong danh sách trước khi có thể tiếp tục

Ví dụ 5. Đọc một tệp và chia nội dung thành một danh sách

with open["data_file.txt"] as f:
    content_list = f.readlines[]

# print the list
print[content_list]

# remove new line characters
content_list = [x.strip[] for x in content_list]
print[content_list]
0

Đọc tệp bằng Trình quản lý ngữ cảnh

Quản lý tệp là một quy trình phức tạp trong bất kỳ ngôn ngữ lập trình nào. Các tập tin phải được xử lý cẩn thận để ngăn chặn tham nhũng của họ. Khi một tệp được mở, phải cẩn thận để đảm bảo tài nguyên được đóng sau đó.  

Và có giới hạn về số lượng tệp có thể được mở cùng một lúc trong Python. Để tránh những vấn đề này, Python cung cấp cho chúng ta Trình quản lý bối cảnh

Giới thiệu khối with

Bất cứ khi nào chúng tôi mở một tệp bằng Python, điều quan trọng là chúng tôi phải nhớ đóng tệp đó. Một phương thức như readlines[] sẽ hoạt động tốt đối với các tệp nhỏ, nhưng nếu chúng ta có một tài liệu phức tạp hơn thì sao?

  • Câu lệnh with được sử dụng để truy cập các tệp tài nguyên một cách an toàn
  • Python tạo ngữ cảnh mới khi gặp khối with
  • Khi khối thực thi, Python sẽ tự động đóng tài nguyên tệp
  • Ngữ cảnh có cùng phạm vi với câu lệnh with

Hãy thực hành sử dụng câu lệnh with bằng cách đọc email mà chúng ta đã lưu dưới dạng tệp văn bản

email. txt
Kính gửi quý khách hàng,
Cảm ơn bạn đã liên hệ với chúng tôi về vấn đề với sản phẩm mà bạn đã mua. Chúng tôi mong muốn giải quyết bất kỳ mối quan tâm nào của bạn về các sản phẩm của chúng tôi.

Chúng tôi muốn đảm bảo rằng bạn hoàn toàn hài lòng với giao dịch mua hàng của mình. Để đạt được mục tiêu đó, chúng tôi cung cấp bảo đảm hoàn lại tiền trong 30 ngày cho toàn bộ hàng tồn kho của chúng tôi. Chỉ cần trả lại sản phẩm và chúng tôi sẽ vui vẻ hoàn lại giá mua hàng của bạn

Cảm ơn bạn,
Công ty ABC

with open["data_file.txt"] as f:
    content_list = f.readlines[]

# print the list
print[content_list]

# remove new line characters
content_list = [x.strip[] for x in content_list]
print[content_list]
1

Lần này một vòng lặp for được sử dụng để đọc các dòng của tệp. Khi chúng tôi đang sử dụng Trình quản lý ngữ cảnh, tệp sẽ tự động bị đóng khi trình xử lý vượt quá phạm vi. Khi chức năng kết thúc với tệp, câu lệnh with đảm bảo tài nguyên được xử lý có trách nhiệm

Tóm lược

Chúng tôi đã đề cập đến một số cách đọc tệp theo từng dòng trong Python. Chúng tôi đã học được rằng có một sự khác biệt lớn giữa các phương thức readline[] và readlines[] và chúng tôi có thể sử dụng vòng lặp for để đọc nội dung của một đối tượng tệp.  

Chúng ta cũng đã học cách sử dụng câu lệnh with để mở và đọc tệp. Chúng ta đã thấy cách trình quản lý ngữ cảnh được tạo để giúp việc xử lý tệp an toàn và dễ dàng hơn trong Python.  

Một số ví dụ đã được cung cấp để minh họa các hình thức xử lý tệp khác nhau có sẵn trong Python. Dành thời gian để khám phá các ví dụ và đừng ngại thử nghiệm mã nếu bạn không hiểu điều gì đó

Nếu bạn muốn tìm hiểu về lập trình với Python, hãy theo các liên kết bên dưới để xem thêm các bài học hay từ Python cho người mới bắt đầu

bài viết liên quan

  • Sử dụng Python try except để xử lý lỗi
  • Cách sử dụng Python split string để cải thiện kỹ năng mã hóa của bạn
  • Sử dụng nối chuỗi Python để dễ đọc hơn

Có liên quan

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

Món ăn. 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ủ Đề