Làm thế nào để bạn bỏ qua một dòng văn bản trong python?

Đọc từng dòng một tệp văn bản là một trong những hoạt động phổ biến bạn thực hiện khi xử lý một tệp văn bản lớn. Thông thường, bạn không quan tâm đến một vài dòng đầu tiên và muốn bỏ qua chúng và làm việc với phần còn lại của tệp. Một vài dòng đầu tiên của tệp văn bản mà bạn muốn bỏ qua thường là nhận xét hoặc một số dữ liệu meta và bắt đầu bằng một số ký tự đặc biệt như “#”

Dưới đây là 3 cách để đọc một tệp văn bản theo dòng Python và bỏ qua các dòng nhận xét ban đầu. Bạn không cần phải biết mình muốn bỏ qua bao nhiêu dòng. Cách tiếp cận đầu tiên là một cách tiếp cận ngây thơ bằng cách sử dụng câu lệnh if và không hiệu quả. Cách tiếp cận thứ hai để bỏ qua các dòng trong khi đọc tệp văn bản là hiệu quả, nhưng vẫn hơi rắc rối và hơi rắc rối. Tuy nhiên, cách tiếp cận thứ ba, sử dụng công cụ thả xuống của itertools để bỏ qua các dòng trong khi đọc từng dòng tệp là hiệu quả và thanh lịch

1. Cách bỏ qua các dòng chú thích ban đầu bằng câu lệnh if

Một cách đơn giản để đọc tệp và bỏ qua các dòng nhận xét ban đầu là sử dụng câu lệnh “if” và kiểm tra xem mỗi dòng có bắt đầu bằng ký tự nhận xét “#”. Chuỗi Python có một phương thức hay “startswith” để kiểm tra xem một chuỗi, trong trường hợp này là một dòng, có bắt đầu bằng các ký tự cụ thể không. Ví dụ: “#bình luận”. startedwith(“#”) sẽ trả về TRUE. Nếu dòng không bắt đầu bằng “#”, chúng ta thực hiện khối lệnh khác

Vấn đề với cách tiếp cận bỏ qua một vài dòng này là chúng tôi kiểm tra từng dòng của tệp và xem liệu nó có bắt đầu bằng “#” hay không, điều này có thể rất chậm nếu tệp thực sự lớn. Vì vậy, rõ ràng đây không phải là một cách tiếp cận hiệu quả để đọc tệp và bỏ qua các dòng nhận xét

# open a file using with statement
with open(filename,'r') as fh
     for curline in fh:
         # check if the current line
         # starts with "#"
         if curline.startswith("#"):
            ...
            ...
         else:
            ...
            ...


2. Đọc từng dòng và bỏ qua dòng chú thích bằng câu lệnh while

Cách tiếp cận thứ hai để đọc tệp và phần đầu tiên của tệp dựa trên một số điều kiện là sử dụng câu lệnh while. Ý tưởng ở đây là đọc từng dòng tệp bằng câu lệnh while và ngắt câu lệnh while ngay khi chúng ta nhìn thấy dòng đầu tiên không có ký hiệu nhận xét (hoặc không có mẫu quan tâm). Sau đó, chúng tôi sử dụng vòng lặp while thứ hai để đọc qua phần còn lại của tệp

with open('my_file.txt') as fh:
    # Skip initial comments that starts with #
    while True:
        line = fh.readline()
        # break while statement if it is not a comment line
        # i.e. does not startwith #
        if not line.startswith('#'):
            break

    # Second while loop to process the rest of the file
    while line:
        print(line)
        ...
        ...

3. Đọc từng dòng và bỏ qua các dòng bằng cách sử dụng câu lệnh dropwhile của itertools

Mô-đun itertools của Python có một hàm/trình lặp thực sự gọn gàng được gọi là dropwhile. dropwhile có thể hoạt động trên bất kỳ thứ gì có thể lặp lại như trình xử lý tệp và danh sách có điều kiện lọc. dropwhile sẽ loại bỏ các phần tử cho đến khi điều kiện lọc là sai

Hãy để chúng tôi xem một đơn giản trên một danh sách

>from itertools import dropwhile
>list(dropwhile(lambda x: x<5, [1,4,6,4,1]))
[6, 4, 1]

Ở đây, điều kiện x<5 vẫn đúng cho đến phần tử thứ 3 (6), do đó, cứ tiếp tục bỏ các phần tử cho đến khi đó

Chúng ta có thể sử dụng cùng một ý tưởng để đọc từng dòng tệp và bỏ qua các dòng nhận xét ban đầu. Trước tiên chúng ta hãy viết một hàm tiện ích đơn giản nhận vào một dòng và trả về giá trị true nếu đó là dòng nhận xét i. e. bắt đầu với "#"

def is_comment(s):
    """ function to check if a line
         starts with some character.
         Here # for comment
    """
    # return true if a line starts with #
    return s.startswith('#')

Sau đó, chúng ta có thể mở tệp bằng cách sử dụng câu lệnh with và lặp qua từng dòng bằng cách sử dụng trình lặp dropwhile sao cho chúng ta đặt tên hàm cho điều kiện lọc và trình xử lý tệp là lần lặp của chúng ta. Điều này sẽ bỏ qua tất cả các dòng nhận xét ban đầu và khối mã bên trong vòng lặp for sẽ chỉ nhìn thấy các dòng sau khi điều kiện tạm dừng không thành công

with open(filename,'r') as fh
     for curline in dropwhile(is_comment, fh):
         ...
         ...

Nếu bạn có một khung dữ liệu (chứa dữ liệu chuỗi và số ở dạng bảng) ở định dạng csv/tsv, không phải tệp văn bản và muốn đọc và bỏ qua các dòng đầu tiên, bạn có thể dễ dàng sử dụng read_csv của gấu trúc để làm điều đó. Kiểm tra ở đây để biết ví dụ

Chào mừng. Ký tự xuống dòng mới trong Python dùng để đánh dấu cuối dòng và đầu dòng mới. Biết cách sử dụng nó là điều cần thiết nếu bạn muốn in đầu ra ra bàn điều khiển và làm việc với các tệp

Trong bài viết này, bạn sẽ học

  • Cách xác định ký tự dòng mới trong Python
  • Cách ký tự dòng mới có thể được sử dụng trong chuỗi và câu lệnh in
  • Cách bạn có thể viết các câu lệnh in không thêm ký tự dòng mới vào cuối chuỗi

Hãy bắt đầu nào. ✨

🔹 Nhân vật dòng mới

Ký tự dòng mới trong Python là

Làm thế nào để bạn bỏ qua một dòng văn bản trong python?

Nó được làm bằng hai nhân vật

  • Dấu gạch chéo ngược
  • Lá thư
    with open('my_file.txt') as fh:
        # Skip initial comments that starts with #
        while True:
            line = fh.readline()
            # break while statement if it is not a comment line
            # i.e. does not startwith #
            if not line.startswith('#'):
                break
    
        # Second while loop to process the rest of the file
        while line:
            print(line)
            ...
            ...
    
    0

Nếu bạn thấy ký tự này trong một chuỗi, điều đó có nghĩa là dòng hiện tại kết thúc tại điểm đó và một dòng mới bắt đầu ngay sau nó

Làm thế nào để bạn bỏ qua một dòng văn bản trong python?

Bạn cũng có thể sử dụng ký tự này trong chuỗi f

>>> print(f"Hello\nWorld!")

🔸 Ký tự dòng mới trong báo cáo in

Theo mặc định, các câu lệnh in thêm một ký tự dòng mới "đằng sau hậu trường" ở cuối chuỗi

Như thế này

Làm thế nào để bạn bỏ qua một dòng văn bản trong python?

Điều này xảy ra bởi vì, theo

Giá trị mặc định của tham số

with open('my_file.txt') as fh:
    # Skip initial comments that starts with #
    while True:
        line = fh.readline()
        # break while statement if it is not a comment line
        # i.e. does not startwith #
        if not line.startswith('#'):
            break

    # Second while loop to process the rest of the file
    while line:
        print(line)
        ...
        ...
1 của hàm
with open('my_file.txt') as fh:
    # Skip initial comments that starts with #
    while True:
        line = fh.readline()
        # break while statement if it is not a comment line
        # i.e. does not startwith #
        if not line.startswith('#'):
            break

    # Second while loop to process the rest of the file
    while line:
        print(line)
        ...
        ...
2 tích hợp là
with open('my_file.txt') as fh:
    # Skip initial comments that starts with #
    while True:
        line = fh.readline()
        # break while statement if it is not a comment line
        # i.e. does not startwith #
        if not line.startswith('#'):
            break

    # Second while loop to process the rest of the file
    while line:
        print(line)
        ...
        ...
3, do đó, một ký tự dòng mới được thêm vào chuỗi

💡 Mẹo. Nối có nghĩa là "thêm vào cuối"

Đây là định nghĩa hàm

Làm thế nào để bạn bỏ qua một dòng văn bản trong python?

Lưu ý rằng giá trị của

with open('my_file.txt') as fh:
    # Skip initial comments that starts with #
    while True:
        line = fh.readline()
        # break while statement if it is not a comment line
        # i.e. does not startwith #
        if not line.startswith('#'):
            break

    # Second while loop to process the rest of the file
    while line:
        print(line)
        ...
        ...
1 là
with open('my_file.txt') as fh:
    # Skip initial comments that starts with #
    while True:
        line = fh.readline()
        # break while statement if it is not a comment line
        # i.e. does not startwith #
        if not line.startswith('#'):
            break

    # Second while loop to process the rest of the file
    while line:
        print(line)
        ...
        ...
3, vì vậy giá trị này sẽ được thêm vào cuối chuỗi

Nếu bạn chỉ sử dụng một câu lệnh in, bạn sẽ không nhận thấy điều này vì chỉ một dòng sẽ được in

Làm thế nào để bạn bỏ qua một dòng văn bản trong python?

Nhưng nếu bạn sử dụng lần lượt nhiều câu lệnh in trong tập lệnh Python

Làm thế nào để bạn bỏ qua một dòng văn bản trong python?

Đầu ra sẽ được in thành các dòng riêng biệt vì

with open('my_file.txt') as fh:
    # Skip initial comments that starts with #
    while True:
        line = fh.readline()
        # break while statement if it is not a comment line
        # i.e. does not startwith #
        if not line.startswith('#'):
            break

    # Second while loop to process the rest of the file
    while line:
        print(line)
        ...
        ...
3 đã được thêm "hậu trường" vào cuối mỗi dòng

Làm thế nào để bạn bỏ qua một dòng văn bản trong python?

🔹 Cách In Không Có Dòng Mới

Chúng ta có thể thay đổi hành vi mặc định này bằng cách tùy chỉnh giá trị của tham số

with open('my_file.txt') as fh:
    # Skip initial comments that starts with #
    while True:
        line = fh.readline()
        # break while statement if it is not a comment line
        # i.e. does not startwith #
        if not line.startswith('#'):
            break

    # Second while loop to process the rest of the file
    while line:
        print(line)
        ...
        ...
1 của hàm
with open('my_file.txt') as fh:
    # Skip initial comments that starts with #
    while True:
        line = fh.readline()
        # break while statement if it is not a comment line
        # i.e. does not startwith #
        if not line.startswith('#'):
            break

    # Second while loop to process the rest of the file
    while line:
        print(line)
        ...
        ...
2

Nếu chúng ta sử dụng giá trị mặc định trong ví dụ này

Làm thế nào để bạn bỏ qua một dòng văn bản trong python?

Chúng tôi thấy đầu ra được in thành hai dòng

Làm thế nào để bạn bỏ qua một dòng văn bản trong python?

Nhưng nếu chúng ta tùy chỉnh giá trị của

with open('my_file.txt') as fh:
    # Skip initial comments that starts with #
    while True:
        line = fh.readline()
        # break while statement if it is not a comment line
        # i.e. does not startwith #
        if not line.startswith('#'):
            break

    # Second while loop to process the rest of the file
    while line:
        print(line)
        ...
        ...
1 và đặt thành
with open("names.txt", "r") as f:
    print(f.readlines())
2

Làm thế nào để bạn bỏ qua một dòng văn bản trong python?

Một khoảng trắng sẽ được thêm vào cuối chuỗi thay vì ký tự dòng mới

with open('my_file.txt') as fh:
    # Skip initial comments that starts with #
    while True:
        line = fh.readline()
        # break while statement if it is not a comment line
        # i.e. does not startwith #
        if not line.startswith('#'):
            break

    # Second while loop to process the rest of the file
    while line:
        print(line)
        ...
        ...
3, vì vậy đầu ra của hai câu lệnh in sẽ được hiển thị trên cùng một dòng

Làm thế nào để bạn bỏ qua một dòng văn bản trong python?

Bạn có thể sử dụng điều này để in một chuỗi các giá trị trong một dòng, như trong ví dụ này

Làm thế nào để bạn bỏ qua một dòng văn bản trong python?

đầu ra là

Làm thế nào để bạn bỏ qua một dòng văn bản trong python?

💡 Mẹo. Chúng ta thêm câu lệnh điều kiện để đảm bảo rằng dấu phẩy sẽ không được thêm vào số cuối cùng của dãy số

Tương tự, chúng ta có thể sử dụng điều này để in các giá trị của một lần lặp trong cùng một dòng

Làm thế nào để bạn bỏ qua một dòng văn bản trong python?

đầu ra là

Làm thế nào để bạn bỏ qua một dòng văn bản trong python?

🔸 Ký tự dòng mới trong tệp

Ký tự dòng mới

with open('my_file.txt') as fh:
    # Skip initial comments that starts with #
    while True:
        line = fh.readline()
        # break while statement if it is not a comment line
        # i.e. does not startwith #
        if not line.startswith('#'):
            break

    # Second while loop to process the rest of the file
    while line:
        print(line)
        ...
        ...
3 cũng được tìm thấy trong các tệp, nhưng nó bị "ẩn". Khi bạn nhìn thấy một dòng mới trong tệp văn bản, một ký tự dòng mới
with open('my_file.txt') as fh:
    # Skip initial comments that starts with #
    while True:
        line = fh.readline()
        # break while statement if it is not a comment line
        # i.e. does not startwith #
        if not line.startswith('#'):
            break

    # Second while loop to process the rest of the file
    while line:
        print(line)
        ...
        ...
3 đã được chèn vào

Làm thế nào để bạn bỏ qua một dòng văn bản trong python?

Bạn có thể kiểm tra điều này bằng cách đọc tệp với

with open("names.txt", "r") as f:
    print(f.readlines())
6, như thế này

with open("names.txt", "r") as f:
    print(f.readlines())

đầu ra là

Làm thế nào để bạn bỏ qua một dòng văn bản trong python?

Như bạn có thể thấy, ba dòng đầu tiên của tệp văn bản kết thúc bằng một dòng mới

with open('my_file.txt') as fh:
    # Skip initial comments that starts with #
    while True:
        line = fh.readline()
        # break while statement if it is not a comment line
        # i.e. does not startwith #
        if not line.startswith('#'):
            break

    # Second while loop to process the rest of the file
    while line:
        print(line)
        ...
        ...
3 ký tự có tác dụng "đằng sau hậu trường. "

💡 Mẹo. Lưu ý rằng chỉ dòng cuối cùng của tệp không kết thúc bằng ký tự dòng mới

🔹 Tóm lại

  • Ký tự dòng mới trong Python là
    with open('my_file.txt') as fh:
        # Skip initial comments that starts with #
        while True:
            line = fh.readline()
            # break while statement if it is not a comment line
            # i.e. does not startwith #
            if not line.startswith('#'):
                break
    
        # Second while loop to process the rest of the file
        while line:
            print(line)
            ...
            ...
    
    3. Nó được sử dụng để chỉ ra sự kết thúc của một dòng văn bản
  • Bạn có thể in các chuỗi mà không cần thêm một dòng mới với
    with open("names.txt", "r") as f:
        print(f.readlines())
    9, mà
    with open('my_file.txt') as fh:
        # Skip initial comments that starts with #
        while True:
            line = fh.readline()
            # break while statement if it is not a comment line
            # i.e. does not startwith #
            if not line.startswith('#'):
                break
    
        # Second while loop to process the rest of the file
        while line:
            print(line)
            ...
            ...
    
    00 là ký tự sẽ được sử dụng để phân tách các dòng

Tôi thực sự hy vọng rằng bạn thích bài viết của tôi và thấy nó hữu ích. Bây giờ bạn có thể làm việc với ký tự dòng mới trong Python

Kiểm tra các khóa học trực tuyến của tôi. Theo dõi tôi trên Twitter. ⭐️

QUẢNG CÁO

QUẢNG CÁO

QUẢNG CÁO

QUẢNG CÁO


Làm thế nào để bạn bỏ qua một dòng văn bản trong python?
Estefania Cassingena Navone

Nhà phát triển, nhà văn kỹ thuật và người tạo nội dung @freeCodeCamp. Tôi chạy freeCodeCamp. org Kênh YouTube Español


Nếu bạn đọc đến đây, hãy tweet cho tác giả để cho họ thấy bạn quan tâm. Tweet một lời cảm ơn

Học cách viết mã miễn phí. Chương trình giảng dạy mã nguồn mở của freeCodeCamp đã giúp hơn 40.000 người có được việc làm với tư cách là nhà phát triển. Bắt đầu