Lewati ke konten
🛠️ToolsShed

Filter Baris CSV

Memfilter baris CSV berdasarkan kondisi nilai kolom.

Tentang alat ini

CSV Row Filter adalah alat berbasis browser yang memungkinkan Anda memfilter baris dari file CSV berdasarkan nilai kolom. Baik Anda bekerja dengan kumpulan data, catatan pelanggan, atau data tabular lainnya, alat ini membantu Anda dengan cepat mengisolasi baris yang sesuai dengan kriteria Anda tanpa perlu menulis kode atau menggunakan rumus spreadsheet yang rumit.

Untuk menggunakan alat ini, tempel data CSV Anda ke dalam bidang input dan tentukan kondisi filter dengan memilih kolom, memilih operator (sama dengan, berisi, lebih besar dari, dll.), dan memasukkan nilai. Anda dapat menggabungkan beberapa kondisi menggunakan logika AND/OR untuk membuat filter yang presisi. Baris yang cocok ditampilkan secara instan di output, yang dapat Anda salin, unduh, atau perbaiki lebih lanjut dengan filter tambahan.

CSV Row Filter sangat berguna untuk analis data, pengembang, dan siapa pun yang secara teratur bekerja dengan kumpulan data tabular. Ini menangani format umum secara otomatis, melestarikan data asli Anda, dan berjalan sepenuhnya di browser Anda tanpa pengunggahan server, menjadikannya cara yang cepat dan aman untuk menjelajahi dan memproses file CSV.

Pertanyaan yang Sering Diajukan

Implementasi Kode

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.