Hướng dẫn how to ignore lines in python - làm thế nào để bỏ qua các dòng trong python

Đọc một dòng tệp văn bản từng dòng là một trong những hoạt động phổ biến bạn làm trong 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 ban đầu 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 ban đầu 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 với một số ký tự đặc biệt như là##.

Dưới đây là 3 cách để đọc một dòng tệp văn bản theo dòng Python và bỏ qua các dòng bình luận ban đầu. Bạn không cần phải biết bạn 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 một tệp văn bản là hiệu quả, nhưng vẫn cắn một chút và một chút hack. Tuy nhiên, cách tiếp cận thứ ba, sử dụng Dropfools, để bỏ qua các dòng trong khi đọc một dòng từng dòng là hiệu quả và thanh lịch.

1. Cách bỏ qua các dòng bình luận ban đầu bằng cách sử dụng câu lệnh IFif statement

Một cách ngây thơ để đọc một tệp và bỏ qua các dòng bình luận ban đầu là sử dụng câu lệnh IF IF IF và kiểm tra xem mỗi dòng bắt đầu với ký tự nhận xét. Chuỗi Python có một phương pháp tốt đẹp, bắt đầu để kiểm tra xem một chuỗi, trong trường hợp này là một dòng, bắt đầu bằng các ký tự cụ thể. Ví dụ:##comment. Nếu dòng không bắt đầu với số##, chúng tôi thực thi khối khác.

Vấn đề với cách tiếp cận này để bỏ qua một vài dòng 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 cách##, có thể bị chậm nếu tệp thực sự lớn. Vì vậy, rõ ràng nó không phải là một cách tiếp cận hiệu quả để đọc một tệp và bỏ qua các dòng bình luận.

# 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 các dòng bình luận bằng cách sử dụng trong khi câu lệnh

Cách tiếp cận thứ hai để đọc một 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 trong khi câu lệnh. Ý tưởng ở đây là đọc một dòng tệp theo dòng trong khi câu lệnh và phá vỡ câu lệnh trong khi chúng ta thấy dòng đầu tiên không có biểu tượng bình luận (hoặc không có mô hình quan tâm). Sau đó, chúng tôi sử dụng một vòng thứ hai trong khi đọc qua phần còn lại của dòng tệp là dòng.

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 Drop của Itertools

Mô -đun Python sườn ITERTOOLS có một chức năng/iterator thực sự gọn gàng có tên là Dropwhile. Dropdy có thể hoạt động trên bất kỳ điều gì có thể thay đổi như trình xử lý tệp và danh sách với điều kiện lọc. Dropde sẽ thả các phần tử cho đến khi điều kiện lọc là sai.itertools module has a really neat function/iterator called dropwhile. dropwhile can operate on any thing iterable like the file handler and list with filtering condition. dropwhile will drop elements until the filtering condition is false.

Hãy cho chúng tôi xem một ví dụ đơn giản về itertools, thả trong 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

Chúng ta có thể sử dụng cùng một ý tưởng để đọc một dòng tệp từng dòng và bỏ qua các dòng bình luận ban đầu. Trước tiên chúng ta hãy viết một chức năng tiện ích đơn giản lấy một dòng và trả về đúng nếu đó là một dòng bình luận, tức là 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 tôi có thể mở tệp bằng cách sử dụng câu lệnh và vòng lặp qua từng dòng bằng trình lặp Dropdye để chúng tôi đưa ra tên chức năng cho điều kiện lọc và trình xử lý tệp như có thể sử dụng được. Điều này sẽ bỏ qua tất cả các dòng bình luận ban đầu và khối mã bên trong vòng lặp For sẽ chỉ thấy các dòng sau khi điều kiện giảm thất bại.

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

Nếu bạn có 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 ban đầu, bạn có thể dễ dàng sử dụng gandas hồi read_csv để làm điều đó. Kiểm tra ở đây để biết ví dụ

  • 7 mẹo để đọc tệp CSV dưới dạng khung dữ liệu Pandas

Trong bài viết này sẽ xem cách bỏ qua một dòng trong một tệp trong Python. Có nhiều cách để làm điều đó. Trong bài viết này, chúng tôi sẽ thảo luận về hai cách tiếp cận.

1. Sử dụng phương thức readlines ()

Phương thức ReadLines () đọc một tệp và trả về một danh sách. Ở đây, mỗi mục của một danh sách chứa một dòng của tệp, tức là, danh sách [0] sẽ có dòng đầu tiên, danh sách [1] dòng thứ hai, v.v.readlines() method reads a file and returns a list. Here, each item of a list contains a line of the file, i.e., list[0] will have the first line, list[1] the second line, and so on.

Vì nó là một danh sách, chúng tôi có thể lặp lại nó. Khi số dòng hiện tại bằng số dòng mà chúng tôi muốn bỏ qua, chúng tôi bỏ qua dòng đó. Nếu không, chúng tôi xem xét nó.

Hãy xem xét ví dụ sau trong đó chúng tôi in tất cả các dòng, ngoại trừ bản mà chúng tôi muốn bỏ qua.

def skipLine(f, skip):
  lines = f.readlines()
  skip = skip - 1 #index of the list starts from 0

  for line_no, line in enumerate(lines):
    if line_no==skip:
      pass
    else:
      print(line, end="")

Hãy cùng thử mã trên bằng cách bỏ qua dòng đầu tiên của tệp mẫu.txt.sample.txt file.

sample.txt

This is a sample file.
Python is a very powerful programming language.
Let's see how to skip a line in Python.
It is very easy.
I love Python. It makes everything so fun.
try:
  f = open("sample.txt", "r")
  skipLine(f, 1) 
finally:
  f.close()

Hướng dẫn how to ignore lines in python - làm thế nào để bỏ qua các dòng trong python

Đầu ra

Python is a very powerful programming language.
Let's see how to skip a line in Python.
It is very easy.
I love Python. It makes everything so fun.

Bây giờ, hãy bỏ qua dòng thứ 3.rd line.

try:
  f = open("sample.txt", "r")
  skipLine(f, 3) 
finally:
  f.close()

Đầu ra

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

Bây giờ, hãy bỏ qua dòng thứ 3.

Nếu bạn vượt qua một giá trị lớn hơn tổng số dòng hoặc nhỏ hơn 1, thì sẽ không có gì xảy ra.

2. Sử dụng phương thức readlines () và cắt giảm danh sáchreadlines() method returns a list, we can perform slicing to skip a specific line. Consider the following example.

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ì phương thức Readlines () trả về một danh sách, chúng ta có thể thực hiện cắt lát để bỏ qua một dòng cụ thể. Xem xét các ví dụ sau.sample.txt file.

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

Đầu ra

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

Hướng dẫn how to ignore lines in python - làm thế nào để bỏ qua các dòng trong python

Bây giờ, hãy bỏ qua dòng thứ 3.