Перейти к содержимому

Фильтр Строк CSV

Фильтрует строки CSV по условиям значений столбцов.

Об этом инструменте

CSV Row Filter — это инструмент на основе браузера, который позволяет фильтровать строки CSV-файла по значениям столбцов. Независимо от того, работаете ли вы с наборами данных, записями клиентов или любыми табличными данными, этот инструмент помогает быстро выделить строки, соответствующие вашим критериям, без необходимости писать код или использовать сложные формулы электронных таблиц.

Чтобы использовать инструмент, вставьте данные CSV в поле ввода и определите условия фильтра, выбрав столбец, выбрав оператор (равно, содержит, больше чем и т.д.) и введя значение. Вы можете комбинировать несколько условий, используя логику AND/OR для создания точных фильтров. Совпадающие строки мгновенно отображаются в выходных данных, которые можно скопировать, загрузить или дополнительно уточнить с помощью дополнительных фильтров.

CSV Row Filter особенно полезен для аналитиков данных, разработчиков и всех, кто регулярно работает с табличными наборами данных. Он автоматически обрабатывает общие форматы, сохраняет исходные данные и работает полностью в вашем браузере без загрузки на сервер, что делает его быстрым и безопасным способом изучения и обработки CSV-файлов.

Часто задаваемые вопросы

Реализация кода

import csv
import io

def filter_csv(csv_text: str, column: str, condition: str, value: str) -> str:
    """
    Filter CSV rows by condition on a column.
    condition: 'contains' | 'equals' | 'gt' | 'lt' | 'not_contains'
    """
    reader = csv.DictReader(io.StringIO(csv_text))
    if reader.fieldnames is None:
        return ""
    rows = []
    for row in reader:
        cell = row.get(column, "")
        if condition == "contains" and value.lower() in cell.lower():
            rows.append(row)
        elif condition == "equals" and cell == value:
            rows.append(row)
        elif condition == "not_contains" and value.lower() not in cell.lower():
            rows.append(row)
        elif condition in ("gt", "lt"):
            try:
                if condition == "gt" and float(cell) > float(value):
                    rows.append(row)
                elif condition == "lt" and float(cell) < float(value):
                    rows.append(row)
            except ValueError:
                pass

    out = io.StringIO()
    writer = csv.DictWriter(out, fieldnames=reader.fieldnames)
    writer.writeheader()
    writer.writerows(rows)
    return out.getvalue()

csv_data = """name,age,city
Alice,30,New York
Bob,25,London
Carol,35,New York"""

print(filter_csv(csv_data, "city", "equals", "New York"))
print(filter_csv(csv_data, "age", "gt", "28"))

Comments & Feedback

Comments are powered by Giscus. Sign in with GitHub to leave a comment.