Python
September 28, 2023

Примеры на Python: замена, удаление, фильтрация, анализ

Заменить символы

def zamena(file_path, old_symbol, new_symbol):
    with open(file_path, "r") as f:
        data = f.read()

    data = data.replace(old_symbol, new_symbol)

    with open(file_path, "w") as f:
        f.write(data)
         
zamena("zamena.txt", "1", "test")

Удалить лишние символы

Делаем тоже самое, что и выше, но в этой строке:

zamena("zamena.txt", "1", "test")

Убираем "test", т. е. оставляем пустым, вот так:

zamena("zamena.txt", "1", "")

Удалить строки без букв

with open('ishodnii_file.txt', 'r') as infile, open('resultat.txt', 'w') as outfile:
    for line in infile:
        if any(char.isalpha() for char in line):
            outfile.write(line)

Удалить столбец по номеру

import pandas as pd
# Путь к CSV файлу
file_path = '2.csv'
# Загрузка данных из CSV в DataFrame
df = pd.read_csv(file_path)
# Номер столбца, который нужно удалить (нумерация с 1)
column_to_delete = 3  # Например, удаляем третий столбец
# Удаление столбца по номеру
df.drop(df.columns[column_to_delete - 1], axis=1, inplace=True)
# Сохранение измененного DataFrame в CSV файл
df.to_csv(file_path, index=False)

Вытащить почты из текстового файла

import re
def extract_emails_from_file(filename):
    emails = []
    with open(filename, 'r') as file:
        text = file.read()
        email_pattern = r'\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b'
        emails = re.findall(email_pattern, text)
    return emails
# Путь к файлу, из которого нужно извлечь email
filename = 'file.csv'
# Извлекаем email из файла
extracted_emails = extract_emails_from_file(filename)
# Выводим извлеченные email
print("Почты:")
for email in extracted_emails:
    print(email)

Удалить строки, которые длиннее x

def remove_long_lines(filename, max_length):
    # Чтение содержимого файла
    with open(filename, 'r') as file:
        lines = file.readlines()
    # Удаление строк, длина которых превышает max_length
    filtered_lines = [line for line in lines if len(line) <= max_length]
    # Запись отфильтрованных строк в файл
    with open(filename, 'w') as file:
        file.writelines(filtered_lines)
# Указываем путь к файлу и максимальную длину строки для удаления
filename = 'file.csv'  # путь к файлу
max_length = 5  # максимальная длина строки
# Вызываем функцию для удаления строк
remove_long_lines(filename, max_length)

Удалить строки, которые короче x

import unicodedata
def remove_short_lines(filename, min_length):
    # Чтение содержимого файла
    with open(filename, 'r', encoding='utf-8') as file:
        lines = file.readlines()
    # Удаление строк, длина которых меньше min_length
    filtered_lines = [line for line in lines if len(unicodedata.normalize('NFC', line).strip()) >= min_length]
    # Запись отфильтрованных строк в файл
    with open(filename, 'w', encoding='utf-8') as file:
        file.writelines(filtered_lines)
filename = 'file.csv'  # путь к файлу
min_length = 5  # минимальная длина строки
# Вызываем функцию для удаления строк
remove_short_lines(filename, min_length)

Оставить строки, которые содержат x

def filter_lines(input_filename, output_filename, x):
    try:
        with open(input_filename, 'r') as input_file, open(output_filename, 'w') as output_file:
            for line in input_file:
                if x in line:
                    output_file.write(line)
        print(f"Строки, содержащие '{x}', были сохранены в файл '{output_filename}'.")
    except FileNotFoundError:
        print(f"Файл '{input_filename}' не найден.")
if __name__ == "__main__":
    input_filename = input("Путь к входному файлу: ")
    output_filename = input("Путь к выходному файлу: ")
    x = input("Оставить строки с символами: ")
    filter_lines(input_filename, output_filename, x)

Удалить строки, которые содержат x

def remove_lines_with_symb(input_file, output_file, substring):
    try:
        with open(input_file, 'r') as input_file:
            with open(output_file, 'w') as output_file:
                for line in input_file:
                    if substring not in line:
                        output_file.write(line)
        print('Удаление строк, содержащих "{}", завершено. Результат сохранен в {}'.format(substring, output_file))
    except FileNotFoundError:
        print('Файл не найден.')
if __name__ == "__main__":
    input_file = input('Введите путь к входному файлу: ')
    output_file = input('Введите путь к выходному файлу: ')
    substring = input('Удалить строки с: ')
    
    remove_lines_with_symb(input_file, output_file, substring)

Подсчет кол-ва строк в файле

def count_lines(filename, chunk_size=1024):
    total_lines = 0
    
    with open(filename, 'r') as file:
        while True:
            chunk = file.read(chunk_size)
            if not chunk:
                break
            total_lines += chunk.count('\n')   
    return total_lines
if __name__ == "__main__":
    file_name = input("Введите имя файла: ")
    
    try:
        lines_count = count_lines(file_name)
        print(f"Количество строк в файле '{file_name}': {lines_count}")
    except FileNotFoundError:
        print(f"Файл '{file_name}' не найден.")
    except Exception as e:
        print(f"Произошла ошибка: {str(e)}")

Подсчет кол-ва x (символ(ы), который(ые) указывает пользователь) в файле

def count_occurrences_in_file(filename, target_char, block_size=4096):
    total_occurrences = 0
    with open(filename, 'r') as file:
        while True:
            block = file.read(block_size)
            if not block:
                break
            # Count occurrences of the target character in the block
            occurrences_in_block = block.count(target_char)
            total_occurrences += occurrences_in_block
    return total_occurrences
# Запросить у пользователя имя файла и символ для подсчета
filename = input("Введите имя файла: ")
target_char = input("Введите символ для подсчета: ")
# Подсчитать количество символов в файле
try:
    occurrences = count_occurrences_in_file(filename, target_char)
    print(f"Количество символов '{target_char}' в файле '{filename}': {occurrences}")
except FileNotFoundError:
    print(f"Файл '{filename}' не найден.")
except Exception as e:
    print("Произошла ошибка при подсчете символов:", str(e))