Hướng dẫn find a line in a file python - tìm một dòng trong một tập tin python

Danh sách xây dựng các dòng phù hợp - một số hương vị:

def lines_that_equal[line_to_match, fp]:
    return [line for line in fp if line == line_to_match]

def lines_that_contain[string, fp]:
    return [line for line in fp if string in line]

def lines_that_start_with[string, fp]:
    return [line for line in fp if line.startswith[string]]

def lines_that_end_with[string, fp]:
    return [line for line in fp if line.endswith[string]]

Build Trình tạo các dòng phù hợp [bộ nhớ hiệu quả]:

def generate_lines_that_equal[string, fp]:
    for line in fp:
        if line == string:
            yield line

In tất cả các dòng đối sánh [tìm tất cả các trận đấu trước, sau đó in chúng]:

with open["file.txt", "r"] as fp:
    for line in lines_that_equal["my_string", fp]:
        print line

In tất cả các dòng phù hợp [in chúng một cách lười biếng, như chúng ta tìm thấy chúng]

with open["file.txt", "r"] as fp:
    for line in generate_lines_that_equal["my_string", fp]:
        print line

Máy phát điện [được sản xuất bởi năng suất] là bạn bè của bạn, đặc biệt là với các tệp lớn không phù hợp với bộ nhớ.

Trong hướng dẫn Python này, bạn sẽ học cách tìm kiếm một chuỗi trong một tệp văn bản. Ngoài ra, chúng tôi sẽ thấy cách tìm kiếm một chuỗi trong một tệp và in số dòng và dòng của nó.

Sau khi đọc bài viết này, bạn sẽ học các trường hợp sau.

  • Nếu một tệp nhỏ, hãy đọc nó vào một chuỗi và sử dụng phương thức
    def generate_lines_that_equal[string, fp]:
        for line in fp:
            if line == string:
                yield line
    
    6 để kiểm tra xem một chuỗi hoặc từ có có trong một tệp không. [dễ dàng và nhanh hơn so với đọc và kiểm tra dòng trên mỗi dòng]
  • Nếu một tệp lớn, hãy sử dụng MMAP để tìm kiếm một chuỗi trong một tệp. Chúng tôi không cần phải đọc toàn bộ tệp trong bộ nhớ, điều này sẽ làm cho bộ nhớ giải pháp của chúng tôi hiệu quả.
  • Tìm kiếm một chuỗi trong nhiều tệp
  • Tìm kiếm tệp cho một danh sách các chuỗi

Đôi khi bạn muốn tìm kiếm một tệp cho nhiều chuỗi. Ví dụ dưới đây cho thấy cách tìm kiếm tệp văn bản cho bất kỳ từ nào trong danh sách.

Bài tập và câu đố Python

Các bài tập mã hóa miễn phí và các câu đố bao gồm các vấn đề cơ bản của Python, cấu trúc dữ liệu, phân tích dữ liệu, v.v.

  1. Hơn 15 bài tập và câu đố dành riêng cho chủ đề

    Mỗi bài tập chứa 10 câu hỏi

  2. Mỗi bài kiểm tra chứa 12-15 mcq

    Trong hướng dẫn Python này, bạn sẽ học cách tìm kiếm một chuỗi trong một tệp văn bản. Ngoài ra, chúng tôi sẽ thấy cách tìm kiếm một chuỗi trong một tệp và in số dòng và dòng của nó.

  3. Sau khi đọc bài viết này, bạn sẽ học các trường hợp sau.

    Nếu một tệp nhỏ, hãy đọc nó vào một chuỗi và sử dụng phương thức

    def generate_lines_that_equal[string, fp]:
        for line in fp:
            if line == string:
                yield line
    
    6 để kiểm tra xem một chuỗi hoặc từ có có trong một tệp không. [dễ dàng và nhanh hơn so với đọc và kiểm tra dòng trên mỗi dòng]

  4. Nếu một tệp lớn, hãy sử dụng MMAP để tìm kiếm một chuỗi trong một tệp. Chúng tôi không cần phải đọc toàn bộ tệp trong bộ nhớ, điều này sẽ làm cho bộ nhớ giải pháp của chúng tôi hiệu quả.

    Tìm kiếm một chuỗi trong nhiều tệp

Chúng tôi sẽ thấy từng giải pháp từng cái một.

Cách tìm kiếm chuỗi trong tệp văn bản

def search_str[file_path, word]:
    with open[file_path, 'r'] as file:
        # read all content of a file
        content = file.read[]
        # check if string present in a file
        if word in content:
            print['string exist in a file']
        else:
            print['string does not exist in a file']

search_str[r'E:\demos\files_demos\account\sales.txt', 'laptop']

Output::

string exists in a file

Sử dụng phương thức Tệp
def generate_lines_that_equal[string, fp]:
    for line in fp:
        if line == string:
            yield line
7 và Phương thức Lớp chuỗi
def generate_lines_that_equal[string, fp]:
    for line in fp:
        if line == string:
            yield line
6 để tìm kiếm chuỗi trong tệp văn bản. Đây là các bước.

Mở tệp ở chế độ đọc

  • Mở tệp bằng cách đặt đường dẫn tệp và chế độ truy cập vào hàm
    def generate_lines_that_equal[string, fp]:
        for line in fp:
            if line == string:
                yield line
    
    9. Chế độ truy cập chỉ định thao tác bạn muốn thực hiện trên tệp, chẳng hạn như đọc hoặc viết. Ví dụ, R là để đọc.
    with open["file.txt", "r"] as fp:
        for line in lines_that_equal["my_string", fp]:
            print line
    
    0
  • Đọc nội dung từ một tệp
  • Sau khi mở, hãy đọc tất cả nội dung của một tệp bằng phương thức
    def generate_lines_that_equal[string, fp]:
        for line in fp:
            if line == string:
                yield line
    
    7. Phương thức ____22 Trả về toàn bộ nội dung tệp ở định dạng chuỗi.
  • Tìm kiếm một chuỗi trong một tệp

Sử dụng phương thức

def generate_lines_that_equal[string, fp]:
    for line in fp:
        if line == string:
            yield line
6 của lớp STR để kiểm tra chuỗi hoặc từ đã cho trong kết quả được trả về bằng phương thức
def generate_lines_that_equal[string, fp]:
    for line in fp:
        if line == string:
            yield line
7. Phương pháp
def generate_lines_that_equal[string, fp]:
    for line in fp:
        if line == string:
            yield line
6. Phương thức Find [] sẽ trả về -1 nếu văn bản đã cho không có trong một tệp
: In this example, we’ll search the string ‘laptop’ in a file, print its line along with the line number.

# string to search in file
word = 'laptop'
with open[r'E:\demos\files_demos\account\sales.txt', 'r'] as fp:
    # read all lines in a list
    lines = fp.readlines[]
    for line in lines:
        # check if string present on a current line
        if line.find[word] != -1:
            print[word, 'string exists in file']
            print['Line Number:', lines.index[line]]
            print['Line:', line]

Output::

laptop string exists in a file
line: laptop 10 15000
line number: 1

Dòng in và số dòng: You can also use the

with open["file.txt", "r"] as fp:
    for line in generate_lines_that_equal["my_string", fp]:
        print line
0 method instead of
with open["file.txt", "r"] as fp:
    for line in generate_lines_that_equal["my_string", fp]:
        print line
1 to read a file line by line, stop when you’ve gotten to the lines you want. Using this technique, we don’t need to read the entire file.

Nếu bạn cần số dòng và dòng, hãy sử dụng phương thức
with open["file.txt", "r"] as fp:
    for line in lines_that_equal["my_string", fp]:
        print line
6] thay vì phương thức
def generate_lines_that_equal[string, fp]:
    for line in fp:
        if line == string:
            yield line
7. Sử dụng phương thức For Loop và
with open["file.txt", "r"] as fp:
    for line in lines_that_equal["my_string", fp]:
        print line
8 để lặp lại từng dòng từ một tệp. Tiếp theo, trong mỗi lần lặp của một vòng lặp, hãy sử dụng điều kiện IF để kiểm tra xem một chuỗi có mặt trong một dòng hiện tại và in số dòng hiện tại và số dòng

Ví dụ để tìm kiếm một chuỗi trong tệp văn bản

Trong phần này, chúng tôi sẽ thấy cách nhanh nhất và tiết kiệm bộ nhớ nhất để tìm kiếm một chuỗi trong một tệp văn bản lớn.

  • Tôi có một tệp ‘sales.txt, chứa dữ liệu bán hàng hàng tháng của các mặt hàng. Tôi muốn dữ liệu bán hàng của một mặt hàng cụ thể. Hãy cùng xem cách tìm kiếm dữ liệu mục cụ thể trong tệp bán hàng.
  • Tìm kiếm tệp cho một chuỗi và in số dòng và dòng của nó
  • Chúng ta có thể sử dụng đối tượng liệt kê này với một vòng lặp để truy cập vào từng dòng và số dòng.

Lưu ý:

with open["file.txt", "r"] as fp:
    for line in generate_lines_that_equal["my_string", fp]:
        print line
6 không tải toàn bộ tệp trong bộ nhớ, vì vậy đây là một giải pháp hiệu quả.: The
with open["file.txt", "r"] as fp:
    for line in generate_lines_that_equal["my_string", fp]:
        print line
6 doesn’t load the entire file in memory, so this is an efficient solution.

Example::

with open[r"E:\demos\files_demos\account\sales.txt", 'r'] as fp:
    for l_no, line in enumerate[fp]:
        # search string
        if 'laptop' in line:
            print['string found in a file']
            print['Line Number:', l_no]
            print['Line:', line]
            # don't look for next lines
            break

Example::

string found in a file
Line Number: 1
Line: laptop 10 15000

mmap để tìm kiếm một chuỗi trong tệp văn bản

Trong phần này, chúng tôi sẽ thấy cách nhanh nhất và tiết kiệm bộ nhớ nhất để tìm kiếm một chuỗi trong một tệp văn bản lớn.

Ngoài ra, bạn có thể sử dụng mô -đun MMAP để tìm một chuỗi trong một tệp lớn. Phương thức

with open["file.txt", "r"] as fp:
    for line in generate_lines_that_equal["my_string", fp]:
        print line
7 tạo đối tượng
with open["file.txt", "r"] as fp:
    for line in generate_lines_that_equal["my_string", fp]:
        print line
8 kiểm tra tệp bên dưới thay vì đọc toàn bộ tệp trong bộ nhớ.

Example::

def generate_lines_that_equal[string, fp]:
    for line in fp:
        if line == string:
            yield line
0

Output::

def generate_lines_that_equal[string, fp]:
    for line in fp:
        if line == string:
            yield line
1

Tìm kiếm chuỗi trong nhiều tệp

Đôi khi bạn muốn tìm kiếm một chuỗi trong nhiều tệp có trong một thư mục. Sử dụng các bước dưới đây để tìm kiếm một văn bản trong tất cả các tệp của một thư mục.

  • Liệt kê tất cả các tệp của một thư mục
  • Đọc từng tệp một
  • Tiếp theo, tìm kiếm một từ trong tệp đã cho. Nếu tìm thấy, hãy ngừng đọc các tập tin.

Example::

def generate_lines_that_equal[string, fp]:
    for line in fp:
        if line == string:
            yield line
2

Output::

def generate_lines_that_equal[string, fp]:
    for line in fp:
        if line == string:
            yield line
3

Tìm kiếm tệp cho một danh sách các chuỗi

Đôi khi bạn muốn tìm kiếm một tệp cho nhiều chuỗi. Ví dụ dưới đây cho thấy cách tìm kiếm tệp văn bản cho bất kỳ từ nào trong danh sách.

Example::

def generate_lines_that_equal[string, fp]:
    for line in fp:
        if line == string:
            yield line
4

Output::

def generate_lines_that_equal[string, fp]:
    for line in fp:
        if line == string:
            yield line
1

Bài tập và câu đố Python

Các bài tập mã hóa miễn phí và các câu đố bao gồm các vấn đề cơ bản của Python, cấu trúc dữ liệu, phân tích dữ liệu, v.v.

  • Hơn 15 bài tập và câu đố dành riêng cho chủ đềTopic-specific Exercises and Quizzes
  • Mỗi bài tập chứa 10 câu hỏi
  • Mỗi bài kiểm tra chứa 12-15 mcq

Bài Viết Liên Quan

Chủ Đề