10 способов извлечь определенные строки из текстового файла на Python

В этой статье блога мы рассмотрим различные методы извлечения определенных строк из текстового файла с помощью Python. Мы предоставим вам разговорные объяснения и примеры кода, чтобы облегчить понимание и реализацию. Итак, приступим!

Метод 1: использование функции readlines()
Мы можем использовать функцию readlines()для чтения всего текстового файла в список строк. Затем мы можем просто разрезать список, чтобы извлечь нужные строки.

def extract_lines(file_path, start_line, end_line):
    with open(file_path, 'r') as file:
        lines = file.readlines()
    return lines[start_line-1:end_line]

Метод 2: цикл по строкам
Если текстовый файл слишком велик и не помещается целиком в памяти, мы можем использовать цикл для перебора строк и извлечения нужного диапазона.

def extract_lines(file_path, start_line, end_line):
    lines = []
    with open(file_path, 'r') as file:
        for i, line in enumerate(file, 1):
            if i >= start_line and i <= end_line:
                lines.append(line)
            elif i > end_line:
                break
    return lines

Метод 3: использование itertools.islice()
Функция islice()из модуля itertoolsпозволяет нам эффективно извлекать определенный диапазон строк из файла без чтение всего файла в память.

from itertools import islice
def extract_lines(file_path, start_line, end_line):
    with open(file_path, 'r') as file:
        lines = islice(file, start_line - 1, end_line)
        return list(lines)

Метод 4: использование fileinput.input()
Модуль fileinputпредоставляет удобный способ перебора строк из нескольких файлов. Мы можем использовать его для извлечения строк из определенного файла, указав путь к файлу в качестве аргумента.

import fileinput
def extract_lines(file_path, start_line, end_line):
    lines = []
    for i, line in enumerate(fileinput.input(file_path), 1):
        if i >= start_line and i <= end_line:
            lines.append(line)
        elif i > end_line:
            break
    return lines

Метод 5. Использование регулярных выражений
Если нам нужно извлечь строки на основе определенного шаблона или ключевого слова, мы можем использовать регулярные выражения (модуль re), чтобы сопоставить строки и извлечь их.

import re
def extract_lines(file_path, start_line, end_line, pattern):
    lines = []
    with open(file_path, 'r') as file:
        for line in file:
            if re.search(pattern, line):
                lines.append(line)
    return lines[start_line - 1:end_line]

Метод 6: использование Pandas
Если текстовый файл имеет структурированный формат, такой как CSV или TSV, мы можем использовать мощную библиотеку Pandas для чтения файла в DataFrame и извлечения нужных строк с помощью индексации.

Метод 6: использование Pandas
Если текстовый файл имеет структурированный формат, такой как CSV или TSV, мы можем использовать мощную библиотеку Pandas, чтобы прочитать файл в DataFrame и извлечь нужные строки с помощью индексации.

import pandas as pd
def extract_lines(file_path, start_line, end_line):
    df = pd.read_csv(file_path, delimiter='\t')  # Replace '\t' with the appropriate delimiter
    return df.iloc[start_line - 1:end_line]

Метод 7. Использование модуля linecache
Модуль linecacheобеспечивает эффективное кэширование строк из файла. Мы можем использовать его для извлечения определенных строк, не загружая весь файл в память.

import linecache
def extract_lines(file_path, start_line, end_line):
    lines = []
    for i in range(start_line, end_line + 1):
        lines.append(linecache.getline(file_path, i))
    return lines

Метод 8: использование подхода с эффективным использованием памяти.
Если текстовый файл очень большой и мы хотим минимизировать использование памяти, мы можем использовать подход с эффективным использованием памяти, который считывает файл построчно и записывает нужные строки. в новый файл.

def extract_lines(file_path, start_line, end_line):
    with open(file_path, 'r') as input_file, open('output.txt', 'w') as output_file:
        for i, line in enumerate(input_file, 1):
            if i >= start_line and i <= end_line:
                output_file.write(line)
            elif i > end_line:
                break

Метод 9: использование инструмента командной строки sed
Если вы предпочитаете использовать инструменты командной строки, вы можете использовать команду sedдля извлечения определенных строк из текстового файла.

sed -n '12,22p' input.txt > output.txt

Метод 10: использование инструмента командной строки awk
Другой вариант командной строки — использовать команду awkдля извлечения определенных строк из текстового файла.

awk 'NR>=12 && NR<=22' input.txt > output.txt

В этой статье мы рассмотрели 10 различных методов извлечения определенных строк из текстового файла с помощью Python. Мы рассмотрели различные подходы, включая чтение всего файла в память, циклическое перебор строк, использование itertools, регулярных выражений, Pandas, линейного кэша, методов эффективного использования памяти и инструментов командной строки, таких как sed и awk. Используя эти методы, вы можете легко извлечь нужные строки из текстового файла в соответствии с вашими требованиями.