Dấu phân cách đường đọc Python

Sau khi sử dụng câu lệnh Python with để mở tệp dữ liệu, chúng ta có thể lặp qua nội dung của tệp bằng vòng lặp for. Khi dữ liệu được đọc, phương thức split[] được sử dụng để tách văn bản thành các từ

Trong trường hợp của chúng tôi, văn bản được phân tách bằng khoảng trắng, đây là hành vi mặc định của phương thức split[]

ví dụ 1. Tách dữ liệu nhân viên bằng Python

with open["employee_data.txt",'r'] as data_file:
    for line in data_file:
        data = line.split[]
        print[data]

đầu ra

['Lana', 'Anderson', '485-3094-88', 'Electrician']
['Elian', 'Johnston', '751-5845-87', 'Interior', 'Designer']
['Henry', 'Johnston', '777-6561-52', 'Astronomer']
['Dale', 'Johnston', '248-1843-09', 'Journalist']
['Luke', 'Owens', '341-7471-63', 'Teacher']
['Amy', 'Perry', '494-3532-17', 'Electrician']
['Chloe', 'Baker', '588-7165-01', 'Interior', 'Designer']

Tách chuỗi bằng dấu phẩy

Chúng tôi cung cấp một dấu tách tùy chọn cho phương thức split[] để chỉ định ký tự nào sẽ tách chuỗi với. Dấu phân cách mặc định là khoảng trắng

Trong ví dụ tiếp theo, chúng tôi sẽ sử dụng dấu phẩy để tách dữ liệu điểm kiểm tra được đọc từ một tệp

điểm. txt
Janet,100,50,69
Thomas,99,76,100
Kate,102,78,65

ví dụ 2. Tách điểm bằng dấu phẩy

with open["grades.txt",'r'] as file:
    for line in file:
        grade_data = line.strip[].split[',']
        print[grade_data]

Phương thức strip[] được sử dụng ở đây để xóa ký tự xuống dòng [\n] khỏi cuối dòng

đầu ra

['Janet', '100', '50', '69']
['Thomas', '99', '76', '100']
['Kate', '102', '78', '65']

Tách tệp văn bản bằng splitlines[]

Phương thức splitlines[] được sử dụng để lấy danh sách các dòng trong tệp văn bản. Đối với các ví dụ tiếp theo, chúng tôi sẽ giả vờ rằng chúng tôi điều hành một trang web dành riêng cho một công ty rạp hát. Chúng tôi đang đọc dữ liệu tập lệnh từ các tệp văn bản và đẩy nó lên trang web của công ty

juliet. txt
Ôi Romeo, Romeo, vì sao ngươi là Romeo?
Từ chối cha ngươi và từ chối tên ngươi.
Hoặc nếu em không muốn, hãy thề với tình yêu của anh
Và anh sẽ không còn là Capulet nữa.

Chúng ta có thể đọc tệp và chia các dòng thành một danh sách bằng phương thức splitlines[]. Sau đó, một vòng lặp for có thể được sử dụng để in nội dung của dữ liệu văn bản

ví dụ 3. Sử dụng splitlines[] để đọc tệp văn bản

with open["juliet.txt",'r'] as script:
    speech = script.read[].splitlines[]

for line in speech:
    print[line]

Sử dụng Trình tạo để phân tách tệp văn bản

Trong Python, trình tạo là một thủ tục đặc biệt có thể được sử dụng để tạo một mảng. Trình tạo tương tự như một hàm trả về một mảng, nhưng nó trả về một phần tử tại một thời điểm

Người tạo sử dụng từ khóa năng suất. Khi Python gặp một câu lệnh năng suất, nó sẽ lưu trữ trạng thái của hàm cho đến sau này, khi trình tạo được gọi lại.

Trong ví dụ tiếp theo, chúng tôi sẽ sử dụng trình tạo để đọc phần đầu bài phát biểu nổi tiếng của Romeo trong vở kịch Romeo và Juliet của Shakespeare. Sử dụng từ khóa suất đảm bảo rằng trạng thái của vòng lặp while của chúng ta được lưu trong mỗi lần lặp. Điều này có thể hữu ích khi làm việc với các tệp lớn.

romeo. txt
Nhưng nhẹ nhàng, ánh sáng nào xuyên qua cửa sổ bên kia vỡ?
Đó là phương đông, và Juliet là mặt trời.
Hãy trỗi dậy, mặt trời xinh đẹp và giết chết mặt trăng ghen tị,
Người đã ốm yếu và xanh xao vì đau buồn
Ngươi, cô ấy .

Ví dụ 4. Tách tệp văn bản bằng trình tạo

def generator_read[file_name]:
    file = open[file_name,'r']
    while True:
        line = file.readline[]
        if not line:
            file.close[]
            break
        yield line

file_data = generator_read["romeo.txt"]
for line in file_data:
    print[line.split[]]

Đọc dữ liệu tệp với khả năng hiểu danh sách

Khả năng hiểu danh sách Python cung cấp một giải pháp tinh tế để làm việc với danh sách. Chúng ta có thể tận dụng cú pháp ngắn hơn để viết mã của mình với khả năng hiểu danh sách. Ngoài ra, các câu lệnh hiểu danh sách thường dễ đọc hơn

Trong các ví dụ trước của chúng tôi, chúng tôi đã phải sử dụng vòng lặp for để đọc các tệp văn bản. Chúng ta có thể trao đổi vòng lặp for của mình để lấy một dòng mã bằng cách sử dụng khả năng hiểu danh sách

Cú pháp hiểu danh sách.
my_list = [biểu thức của phần tử trong danh sách]

Khi dữ liệu đã được lấy thông qua khả năng hiểu danh sách, chúng tôi sử dụng phương thức split[] để tách các dòng và thêm chúng vào danh sách mới.

Sử dụng cùng một romeo. txt từ ví dụ trước, hãy xem cách hiểu danh sách có thể cung cấp cách tiếp cận đơn giản hơn để tách tệp văn bản trong Python.

Ví dụ 5. Sử dụng hiểu danh sách để đọc dữ liệu tệp

with open["romeo.txt",'r'] as file:
    lines = [line.strip[] for line in file]

for line in lines:
    print[line.split[]]
Chia một tệp văn bản thành nhiều tệp nhỏ hơn

Điều gì sẽ xảy ra nếu chúng tôi có một tệp lớn mà chúng tôi muốn chia thành các tệp nhỏ hơn?

Với việc cắt danh sách, chúng tôi nói với Python rằng chúng tôi muốn làm việc với một phạm vi phần tử cụ thể từ một danh sách nhất định. Điều này được thực hiện bằng cách cung cấp điểm bắt đầu và điểm kết thúc cho lát cắt

Trong Python, một danh sách có thể được cắt bằng dấu hai chấm. Trong ví dụ sau, chúng tôi sẽ sử dụng cắt danh sách để chia tệp văn bản thành nhiều tệp nhỏ hơn

Tách một tệp bằng List Slicing

Một danh sách có thể được phân chia bằng cách sử dụng danh sách cắt lát Python. Để làm như vậy, trước tiên chúng tôi đọc tệp bằng phương thức readlines[]. Tiếp theo, nửa trên của tệp được ghi vào một tệp mới có tên romeo_A. txt. Chúng tôi sẽ sử dụng cắt danh sách trong vòng lặp for này để ghi nửa đầu của tệp gốc vào một tệp mới

Sử dụng vòng lặp for một giây, chúng ta sẽ viết phần còn lại của văn bản vào một tệp khác. Để thực hiện slice ta cần phương thức len[] để tìm tổng số dòng trong file gốc.

Cuối cùng, phương thức int[] được sử dụng để chuyển đổi kết quả của phép chia thành một giá trị nguyên.

Ví dụ 6. Tách một tệp văn bản thành nhiều tệp văn bản

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

with open["romeo_A.txt",'w'] as file:
    for line in lines[:int[len[lines]/2]]:
        file.write[line]

with open["romeo_B.txt",'w'] as file:
    for line in lines[int[len[lines]/2]:]:
        file.write[line]

Chạy chương trình này trong cùng thư mục với romeo. txt sẽ tạo các tệp văn bản sau

romeo_A. txt
Nhưng nhẹ nhàng, ánh sáng nào xuyên qua cửa sổ bên kia vỡ?
Đó là phương đông, và Juliet là mặt trời.

romeo_B. txt
Hãy trỗi dậy, hỡi mặt trời xinh đẹp và giết chết mặt trăng ghen tị,
Người đã ốm yếu và xanh xao vì đau buồn
Ngươi, .

bài viết liên quan

Chúng ta đã thấy cách sử dụng phương thức split[] để chia nhỏ tệp văn bản. Ngoài ra, các ví dụ của chúng tôi đã chỉ ra cách split[] được sử dụng song song với trình tạo Python và khả năng hiểu danh sách để đọc các tệp lớn một cách thanh lịch hơn

Tận dụng nhiều phương thức tích hợp sẵn của Python, chẳng hạn như split[] và readlines[], cho phép chúng tôi xử lý các tệp văn bản nhanh hơn. Sử dụng những công cụ này sẽ giúp chúng ta tiết kiệm thời gian và công sức

Nếu bạn nghiêm túc về việc thành thạo Python, bạn nên đầu tư thời gian để học cách sử dụng các phương pháp này để chuẩn bị các giải pháp của riêng mình

Nếu bạn muốn tìm hiểu thêm về lập trình với Python, vui lòng truy cập các hướng dẫn sau từ Python cho người mới bắt đầu

  • Làm thế nào một nhận xét Python có thể thực hiện hoặc phá vỡ chương trình của bạn
  • Tăng tốc mã của bạn với khả năng hiểu danh sách Python

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

Readlines[] trả về kiểu dữ liệu gì?

Phương thức readlines[] trả về danh sách chứa từng dòng trong tệp dưới dạng mục danh sách .

readline[] Strip[] là gì?

readline[] đọc một dòng từ tệp. Kết quả bao gồm một dấu '\n'. . strip[] xóa tất cả khoảng trắng ở đầu và cuối [e. g. '\n' ] đã đề cập ở trên từ một chuỗi .

Phương thức read[] khác với readline[] trong Python như thế nào?

Hàm read[] sẽ đọc toàn bộ tệp cùng một lúc và sau đó in ra các ký tự đầu tiên chiếm bao nhiêu byte mà bạn chỉ định trong dấu ngoặc đơn so với hàm readline[] sẽ chỉ đọc và in ra các ký tự đầu tiên chiếm bao nhiêu byte.

readline[] có lấy \n ở cuối dòng không?

Phương thức readline đọc một dòng từ tệp và trả về dưới dạng một chuỗi. Chuỗi do readline trả về sẽ chứa ký tự xuống dòng ở cuối .

Chủ Đề