Cách đọc tệp văn bản vào danh sách Python

Trong hướng dẫn ngắn này, chúng ta sẽ tìm hiểu cách truy xuất nội dung của tệp dưới dạng danh sách các từ bằng Python

Xác định nội dung tệp mẫu

Hãy bắt đầu bằng cách tạo một tệp mới với một số nội dung mẫu mà bạn có thể sử dụng để làm theo hướng dẫn này

from pathlib import Path
f_path = Path(r"C:\WorkDir\word_file.txt")
f_path.write_text('This is our log file that we will parse using Python code.')

Điều này sẽ trả về số nguyên 58, là số ký tự trong văn bản chúng tôi đã viết

Nhập danh sách các từ từ tệp vào danh sách

Để tạo danh sách các từ trong tệp, chúng tôi sẽ sử dụng hai chức năng

  • Đọc(). đọc toàn bộ luồng tệp vào một đối tượng chuỗi
  • Tách ra(). phân chia một chuỗi thành một đối tượng danh sách. Trả về một danh sách

Chúng tôi cũng sẽ sử dụng khối with, khối này đảm nhiệm việc xử lý tệp và giúp chúng tôi không phải đóng tệp một cách rõ ràng sau khi đọc nó

with open(f_path, 'r') as f_object:
    word_lst = f_object.read().split()

Nếu chúng tôi in word_lst, chúng tôi sẽ nhận được một phân chia từng từ của tệp của chúng tôi

print (word_lst)
['This', 'is', 'our', 'log', 'file', 'that', 'we', 'will', 'parse', 'using', 'Python', 'code.']

Đọc nhiều dòng tệp từng từ

Chúng ta có thể sử dụng phương pháp đã nêu ở trên để chia các tệp nhiều dòng thành các từ. Nhưng nếu chúng ta muốn lấy một danh sách từng từ riêng biệt cho mỗi dòng/chuỗi trong tệp của mình thì sao?

Các lập trình viên Python sử dụng nhiều mảng, danh sách và từ điển làm cấu trúc dữ liệu tuần tự hóa. Việc lưu trữ liên tục các cấu trúc dữ liệu này yêu cầu tệp hoặc cơ sở dữ liệu hoạt động bình thường

Trong bài viết này, chúng ta sẽ xem cách ghi danh sách vào tệp và cách đọc lại danh sách đó vào bộ nhớ

Để ghi dữ liệu vào một tệp và để đọc dữ liệu từ một tệp, ngôn ngữ lập trình Python cung cấp các phương thức tiêu chuẩn write()read() để xử lý một dòng, cũng như writelines()readlines() để xử lý nhiều dòng. Hơn nữa, cả hai mô-đun picklejson cũng cho phép các cách xử lý thông minh với các tập dữ liệu được đăng nhiều kỳ

Sử dụng các Phương thức read() và write()

Để xử lý các ký tự (chuỗi), các phương thức cơ bản read()write() hoạt động xuất sắc. Việc lưu từng dòng một danh sách như vậy vào tệp listfile.txt có thể được thực hiện như sau

Đầu tiên, listitem được mở rộng bằng cách ngắt dòng read()0, sau đó được lưu vào tệp đầu ra. Bây giờ chúng ta có thể xem cách đọc toàn bộ danh sách từ tệp listfile.txt vào bộ nhớ

Hãy nhớ rằng bạn sẽ cần xóa dấu ngắt dòng ở cuối chuỗi. Trong trường hợp này, nó giúp chúng ta rằng Python cũng cho phép liệt kê các thao tác trên chuỗi. Việc loại bỏ này được thực hiện đơn giản như một thao tác danh sách trên chính chuỗi, giữ mọi thứ trừ phần tử cuối cùng. Phần tử này chứa ký tự read()0 đại diện cho ngắt dòng trên hệ thống UNIX/Linux

Sử dụng các Phương thức writelines() và readlines()

Như đã đề cập ở đầu bài viết này, Python cũng chứa hai phương thức - writelines()readlines() - để viết và đọc nhiều dòng trong một bước, tương ứng. Hãy ghi toàn bộ danh sách vào một tệp trên đĩa

Để đọc toàn bộ danh sách từ một tệp trên đĩa, chúng ta cần

Đoạn mã trên tuân theo cách tiếp cận truyền thống hơn được vay mượn từ các ngôn ngữ lập trình khác. Hãy viết nó theo cách Pythonic hơn

Thứ nhất, nội dung tệp được đọc qua readlines(). Thứ hai, trong một vòng lặp read()6 từ mỗi dòng, ký tự ngắt dòng được loại bỏ bằng cách sử dụng phương pháp read()7. Thứ ba, chuỗi được thêm vào danh sách địa điểm dưới dạng mục danh sách mới

So với danh sách trước mã này nhỏ gọn hơn nhiều, nhưng có thể khó đọc hơn đối với các lập trình viên Python mới bắt đầu

Sử dụng Mô-đun Joblib

Các phương pháp ban đầu được giải thích cho đến nay lưu trữ danh sách theo cách mà con người vẫn có thể đọc được - theo đúng nghĩa đen là một danh sách tuần tự trong một tệp. Điều này thật tuyệt vời để tạo các báo cáo đơn giản hoặc xuất tệp xuất để người dùng sử dụng thêm, chẳng hạn như tệp CSV. Tuy nhiên - nếu mục đích của bạn là chỉ tuần tự hóa một danh sách thành một tệp, có thể được tải sau này, thì không cần phải lưu trữ nó ở định dạng mà con người có thể đọc được

Mô-đun read()8 cung cấp cách dễ dàng nhất để kết xuất một đối tượng Python (thực sự có thể là bất kỳ đối tượng nào)

read()8 vẫn là cách đơn giản và rõ ràng nhất để tuần tự hóa các đối tượng ở định dạng hiệu quả và tải chúng sau. Bạn có thể sử dụng bất kỳ định dạng tùy ý nào, chẳng hạn như writelines()0, writelines()1, v.v. Điều đó không thực sự quan trọng - cả read()8 và các lựa chọn thay thế như pickle sẽ đọc tốt các tệp

Sử dụng Mô-đun dưa chua

Để thay thế cho read()8, chúng ta có thể sử dụng pickle. Phương thức writelines()6 của nó lưu trữ danh sách một cách hiệu quả dưới dạng luồng dữ liệu nhị phân. Đầu tiên, tệp đầu ra writelines()7 được mở để ghi nhị phân (writelines()8). Thứ hai, danh sách được lưu trữ trong tệp đã mở bằng phương thức writelines()6

Bước tiếp theo ta đọc danh sách từ file như sau. Đầu tiên, tệp đầu ra writelines()7 được mở nhị phân để đọc (readlines()1). Thứ hai, danh sách các địa điểm được tải từ tệp bằng phương pháp readlines()2

Hai ví dụ ở đây chứng minh việc sử dụng các chuỗi. Mặc dù, pickle hoạt động với tất cả các loại đối tượng Python như chuỗi, số, cấu trúc tự xác định và mọi cấu trúc dữ liệu tích hợp khác mà Python cung cấp

Sử dụng định dạng JSON

Định dạng dữ liệu nhị phân mà pickle sử dụng dành riêng cho Python. Để cải thiện khả năng tương tác giữa các chương trình khác nhau, Ký hiệu đối tượng JavaScript (JSON) cung cấp một lược đồ dễ sử dụng và con người có thể đọc được, do đó trở nên rất phổ biến để tuần tự hóa các tệp và chia sẻ chúng qua các API

Hãy xem hướng dẫn thực hành, thực tế của chúng tôi để học Git, với các phương pháp hay nhất, tiêu chuẩn được ngành chấp nhận và bao gồm bảng gian lận. Dừng các lệnh Git trên Google và thực sự tìm hiểu nó

Ví dụ sau minh họa cách ghi danh sách các loại biến hỗn hợp vào tệp đầu ra bằng mô-đun json. Sau khi mở tệp đầu ra để ghi, phương thức writelines()6 lưu trữ danh sách cơ bản trong tệp bằng ký hiệu JSON

Đọc nội dung của tệp đầu ra trở lại bộ nhớ cũng đơn giản như ghi dữ liệu. Phương thức tương ứng với writelines()6 được đặt tên là readlines()2

Phần kết luận

Các phương pháp khác nhau mà chúng tôi đã trình bày ở trên bao gồm từ ghi/đọc dữ liệu đơn giản cho đến kết xuất/tải dữ liệu qua luồng nhị phân bằng cách sử dụng dưa chua và JSON. Điều này đơn giản hóa việc lưu trữ một danh sách liên tục và đọc lại vào bộ nhớ

Làm cách nào để chuyển đổi từng từ trong tệp văn bản thành danh sách trong Python?

Một cách khác để chuyển đổi chuỗi thành danh sách là sử dụng phương thức split() Python . Phương thức split() tách một chuỗi thành một danh sách, trong đó mỗi mục danh sách là mỗi từ tạo nên chuỗi. Mỗi từ sẽ là một mục danh sách riêng lẻ.

Lệnh nào đọc một tệp vào danh sách Python?

Ví dụ 01. đọc() . Phương pháp đầu tiên để đọc dữ liệu tệp vào danh sách là sử dụng hàm “read()” của python cùng với hàm “split()” trong mã. Mở tệp notepad dưới dạng tệp “txt” và thêm một số dữ liệu vào tệp đó.