Ответы пользователя по тегу CSV
  • Как сделать программу для перемещения файлов?

    Vindicar
    @Vindicar
    RTFM!
    Составляешь список документов в постановлениях (модуль pathlib, метод Path.glob).
    Перебираешь строки csv файла (стандартный модуль csv в помощь).
    Для каждого уникального ID (номера) в csv ищешь подходящее имя файла в постановлениях. Можно простым разбиением имени по символу № (смотри str.split() и str.partition()).
    Определяешь желаемый путь, куда записать файл. Стандартный модуль pathlib в помощь.
    Перемещаешь файл вызовом shutil.move() (стандартный модуль shutil).
    Ответ написан
    2 комментария
  • Как в Python можно изменить запись в CSV?

    Vindicar
    @Vindicar
    RTFM!
    Нет, по-простому нельзя. Единственный простой подход (который показал выше Максим Припадчев) - загрузить целиком в память, там изменить, потом выгрузить назад. Для больших CSV файлов это ресурсоёмко.

    CSV вообще не предназначен для долговременного хранения данных - скорее, для импорта/экспорта.

    Ты мог бы попытаться использовать методы tell() и seek(), чтобы "запомнить" позицию удаляемой строки, а затем в цикле копировать всё что идёт после, "пододвинув" содержимое внутри файла, а потом уже дописать в конец изменённую строку. Но это всё равно долго.

    Лучше импортируй файл в базу SQLite, и работай в дальнейшем уже с ней.
    Ответ написан
    3 комментария
  • Как использовать minet библиотеку для скрапинга из csv файла?

    Vindicar
    @Vindicar
    RTFM!
    Скорее всего, никак. Я не думаю, что автор библиотеки предусматривал ТАКОЙ вариант использования.
    Да и потом, что значит "при помощи query"? Если речь про поисковый запрос, то этот запрос почти наверняка передаётся на соответствующий endpoint для api твиттера, так что поиск реализует не библиотека.

    Ну а csv можно читать питоном "из коробки", с помощью одноименного модуля. Так что вопрос будет только "как подключить полнотекстовый поиск к скрипту на питоне".
    Ответ написан
    Комментировать
  • Как записать Словарь в CSV по СТОЛБЦАМ в Python?

    Vindicar
    @Vindicar
    RTFM!
    Открой для себя функции zip() и itertools.zip_longest().
    Ответ написан
  • Как записать данные в столбик в csv формате?

    Vindicar
    @Vindicar
    RTFM!
    file_writer.writerow([name, subscribers, type, price])

    Ну так ты просишь записать в одну строку, он и записывает в одну строку.
    file_writer.writerows(zip(name, subscribers, type, price))


    zip() превратит отдельные списки ([имя, имя, ...], [подписчики, подписчики, ...], [тип, тип, ...], [цена, цена, ...]) в последовательность значений ([имя, подписчики, тип, цена], [имя, подписчики, тип, цена], ...)
    Ответ написан
    1 комментарий
  • Как разбить файл на несколько по буквам?

    Vindicar
    @Vindicar
    RTFM!
    Открыть по одному файлу на каждую букву (советую сложить их в словарь).
    Пройтись циклом по строкам файла.
    Для каждой строки определить первую букву имени.
    Взять соответствующий открытый файл из словаря, и записать строку в него.
    Ответ написан
    Комментировать
  • Как мне отфильтровать csv файл по датам?

    Vindicar
    @Vindicar
    RTFM!
    Xion, ну дай угадаю, перебирал с начала списка?
    Пусть у нас есть список букв:a b b a b a a ....
    Мы хотим убрать из него буквы b, и перебираем его с начала.
    Текущая буква A: A b b a b a a ....
    Ничего не делаем.
    Переходим к следующей.
    Текущая буква B: a B b a b a a ....
    Удаляем, следующие элементы смещаются на позицию: a B a b a a ....
    Переходим к следующей: a b A b a a ....
    Как видишь, следующую букву b мы из-за этого пропустили.

    Отсюда настоятельная рекомендация: избегай модифицировать коллекцию в процессе перебора! Лучше (реально лучше в случае с файлами) - генерируй по ходу перебора новую коллекцию, куда попадают только "хорошие" элементы. Вместо того, чтобы пытаться удалять "плохие" из уже существующей.

    Если создавать копию данных очень нежелательно, перебирай от конца к началу - тогда сместятся только те элементы, которые мы УЖЕ обработали, и потому это не помешает. Но с файлами это делать очень неудобно.
    Ответ написан
  • Как убрать двойные кавычки при чтении CSV файла?

    Vindicar
    @Vindicar
    RTFM!
    Читаем доку.
    quoting: optional constant from csv module
    Defaults to csv.QUOTE_MINIMAL. If you have set a float_format then floats are converted to strings and thus csv.QUOTE_NONNUMERIC will treat them as non-numeric.

    Константы, которые можно использовать для контроля кавычек, описаны в доках на csv.
    Тот же параметр quoting есть и у read_csv()
    Ответ написан
    Комментировать
  • Как наиболее эффективно прочитать и работать с большим csv в Python?

    Vindicar
    @Vindicar
    RTFM!
    Не очень ясно, какие столбцы идентифицируют объект недвижимости в файле. GUID, похоже, относится к факту купли-продажи. Так что поясни, на что смотреть.

    Я бы прочитал файл построчно, выбирая Postcode и подсчитывая количество тех или иных значений. Будет объёмно, но уж точно не 20 гигов. Затем посмотрел бы на гистограмму - много ли уникальных Postcode (т.е. тех, которые встречают один раз). Если много, то тогда достаточно посмотреть только на те Postcode, которые встречаются неоднократно. Это позволит уменьшить размер файла. В дальнейшем его можно фильтровать дальше по той же схеме, но с другими полями.
    Ответ написан
  • Как экспортировать данные из CSV файла в таблицу PostgreSQL при помощи python?

    Vindicar
    @Vindicar
    RTFM!
    Без знания структуры данных и структуры таблицы тут мало что понять можно.
    Но вообще, вместо тупого копирования из csv через copy_from*(), нужно:
    1. Читай файл самостоятельно. Используй модуль csv, он умеет удобно парсить этот формат, в том числе пропускать строку заголовков.
    2. Выбери в своих данных первичный ключ, чтобы понять, когда такая строка уже есть в базе, а когда её ещё нет. При создании таблицы укажи первичным ключом соотв. столбец.
    3. вставляй данные через запрос вида INSERT ... ON CONFLICT UPDATE. Точный синтаксис нужно посмотреть в документации на постгрес, обычно это называется UPSERT.

    Проблема с copy_from() в том, что у тебя таблица БД должна иметь тот же набор столбцов и в том же порядке, что и CSV, хотя это ограничение совершенно необязательно.
    Ответ написан
    2 комментария