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.