跳到内容
🛠️ToolsShed

CSV行过滤器

按列值条件过滤CSV行。

关于此工具

CSV 行过滤器是一款基于浏览器的工具,可根据列值对 CSV 文件中的行进行过滤。无论您处理的是数据集、客户记录还是其他表格数据,这个工具都可以帮助您快速提取符合条件的行,而无需编写代码或使用复杂的电子表格公式。

使用此工具,只需将 CSV 数据粘贴到输入字段中,选择列、选择运算符(如等于、包含、大于等)并输入值来定义过滤条件。您可以使用 AND/OR 逻辑组合多个条件以创建精确的过滤器。匹配的行将立即显示在输出中,您可以复制、下载或使用其他过滤器进一步分析。

CSV 行过滤器特别适用于数据分析师、开发者以及经常使用表格数据集的人员。它自动处理常见格式、保留原始数据,并完全在浏览器中运行,无需上传到服务器,因此是探索和处理 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.