kshnkvn
@kshnkvn
yay ✌️ t.me/kshnkvn

Как найти строку в CSV и удалить ее?

Есть CSV файл примерно такой структуры:
000000000,Ivan,test
000000000,Ivan,test test test
000000000,Ivan,column
000000000,Ivan,bla bla bla
000000000,Ivan,oops
000000000,Ivan,take it
000000000,Ivan,start

Мне необходимо найти строку со значением, к примеру "oops", после чего скопировать значение этой строки в переменную, а саму строку из CSV удалить. Как это можно сделать?
  • Вопрос задан
  • 754 просмотра
Решения вопроса 1
LazyTalent
@LazyTalent
Data Engineer, Freelancer
from typing import List, Tuple
import csv

SOURCE_CSV = 'source.csv'
SUBSTR = 'ooops'
COL_WITH_VALUES = 1


def main():
    data = get_data_from_file(SOURCE_CSV)
    filtered_data, clone_rows = data_filter(data, SUBSTR, COL_WITH_VALUES)
    save_data(SOURCE_CSV, filtered_data)


def save_data(file_path: str, rows: List[List[str]]):
    with open(file_path, 'w', newline='') as f:
        w = csv.writer(f)
        w.writerows(rows)


def data_filter(rows: List[List[str]], subst: str, col: int) -> Tuple[List[List[str]], List[List[str]]]:
    filtered_data = []
    clone_rows = []
    for row in data:
        if row[col] == subst:
            rows_with_subst.append(row)
        else:
            filtered_data.append(row)
    return filtered_data, clone_rows


def get_data_from_file(file_path: str) -> List[List[str]]:
    with open(SOURCE_CSV, 'r') as f:
        data = [x for x in csv.reader(f)]
    return data


if __name__ == "__main__":
    main()
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
samodum
@samodum
Какой вопрос - такой и ответ
Читаешь csv строку за строкой и копируешь всё во второй файл. При этом делаешь проверку с твоим условием.
После этого исходный файл удаляешь,а новый переименовываешь в старый
Ответ написан
netpastor
@netpastor
Python developer
Проще, быстрее и правильнее загрузить в pandas, сделая нужную выборку и выгрузить в csv
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
25 нояб. 2024, в 18:39
30000 руб./за проект
25 нояб. 2024, в 18:35
30000 руб./за проект
25 нояб. 2024, в 18:33
10000 руб./за проект