LINUX.ORG.RU

python - как работать с csv файлом?

 ,


0

1

Как лучше всего банковскую выгрузку csv подготовить для импорта в программу личного бюджета с помощью Python (csv)?

Например, нужно понять что это, приход или расход. Затем, в зависимости от комментария назначить нужную категорию (т.е. добавить столбец в csv и т.п.).

Как это лучше всего сделать? Сейчас у меня из csv уходит в sqlite, затем обратно в csv.

Насколько для моих задач (парсинг текста, переформатирования), подходят csv.DictReader, например?

Я не программист, программы никогда не писал, по-этому не особо представляю как сделать правильно с точки зрения архитектуры этого добра, что бы было легко расширять критерии парсинга комментариев к проводкам, что бы на их основе делать категории и т.п.

Спасибо.

★★★★★

Последнее исправление: DALDON (всего исправлений: 1)

Ответ на: комментарий от peregrine

Потестирую вечерком vscode сейчас с указанными плагинами и отпишусь что меня не устраивает

То есть все выше ты просто из головы писал? Понятно.

adn ★★★★
()
Ответ на: комментарий от vvn_black

Не умею никак. Но ближе всего с помощью sql (кажется, что это попроще). Собственно пришел спросить, как делают Ъ

DALDON ★★★★★
() автор топика
Ответ на: комментарий от cobold

Большое спасибо. Вот именно такой ответ наиболее мне интересен!

DALDON ★★★★★
() автор топика
Ответ на: комментарий от abcq

В моём случае, сложность в том, что на выбор вроде как есть много технологий. Когда я в любой из них нуль без палочки, что называется, я банально не понимаю, какой инструмент мне лучше подойдет. :) За сим и пришел

DALDON ★★★★★
() автор топика
Ответ на: комментарий от DALDON

если вы собрались что-то программировать, то разницы никакой в общем-то, все языки +/- похожи, и способы взаимодействия с данными в них имеют ту же особенность схожести.

Я понимаю что вам хочет быстро и максимально гибко выбирать данный, но самое приличное в виде юпитера вам уже предложили, это и так по сути интерактивная среда, где вы чуть-чуть понимая как работает любой из языков к которому у юпитера есть привязки, можете в режими эксперимента неспешно почитывая документацию тут же пробовать использовать полученные знания, вот видео с первой страницы гугла как это выглядит https://www.youtube.com/watch?v=kFg3SV4GY1U, но посмотрев его вам все равно придется прочитать хоть что-то чтобы понимать как работает пайтон как импортировать дополнительные библиотеки, как получать экземпляры классов чтобы потом вызывать методы этих классов, придется почитать про ввод-вывод в пайтон и как используя юпитер сделать его более дружелюбным. В общем не получится найти большую красную кнопку которая сделает все зашибись, тут либо гибкость либо надеяться что поставщик ПО которое вы используете реализует нужную вам функциональность, либо доделать ее самому, исходники того ПО что вы упоминали в свободном доступе. Если вас в нем почти все устраивает, возможно это не самая глупая идея. Update А если бы вы посмотрели то, что используете внимательно, то увидели бы, что ваш mmex умеет в кастомные репорты посредством sql и lua https://github.com/moneymanagerex/general-reports#general-reports так что вам нужно только изучить эту функциональность и можно и дальше пользоваться этим ПО, т.к. его можно программировать. Они вам и видео сделали https://www.youtube.com/watch?v=1FDAhWueHm8.

abcq ★★
()
Последнее исправление: abcq (всего исправлений: 2)

Используй pandas. Он всё это может.

yvv ★★☆
()
Ответ на: комментарий от abcq

Спасибо! Ответ супер.

Да, кастомный report mmex умеет. Моя задачка в том, что бы в mmex затолкать данные из банк-клиента максимально толково, что бы сразу проставлялись категории. В зависимости от того или иного вхождения фразы в комментарии. То есть, задачка не в отчетности, а массовой генерации проводок. :)

DALDON ★★★★★
() автор топика
Ответ на: комментарий от DALDON

А вот это не получится как бы вы не старались, это проблема гетерогенности среды, вы можете запрограммировать ваш текущий случай с вашим текущим банк-клиентом, основываясь на том формате выходного файла с данными что он предоставляет + на том, как mmex умеет в себя импортировать эти данные. Но в любом случае это потребует 1) возможно, дописывания функционала к mmex (на это намекает фраза о том что категории я так понимаю у вас при импорте не создаются, и нужно зазбираться как это сделать, возможно это опять же можно банально заскриптовать средствами самого mmex, а возможно и придется править исходники его же на с++) 2) каждый раз когда формат файла банк-клиента будет меняться у вас будет все ломаться и с этим ничего не поделать.

исходя из этих двух вещей вы уже сами подумайте как вам проще будет, иметь просто набор скриптов на коленке + юпитерИ/ИЛИпандас, либо дорабатывать mmex, до того, что вы хотите.

update в общем-то исходя из этого http://github.moneymanagerex.org/moneymanagerex/docs/en/index.html#section11.3 вся ваша задача сводится к тому чтобы взять экспортируемые из банк-клиента данные перетасовать столбцы под формат файла который импортирует mmex и собственно ему же их и импортировать + все это дело можно еще и автоматизировать выгрузка из банк-клиента -> преобразование вашим скриптом -> импорт в ммех

abcq ★★
()
Последнее исправление: abcq (всего исправлений: 1)
Ответ на: комментарий от abcq

Формат банковской выгрузки не менялся уже много лет (это, кстати, звоночек, на самом деле. Ну да ладно). Про автоматическое создание категорий, да, не подумал об этом. Но, в моём случае всё просто должно быть: если из парсинга текста комментария к проводке нет возможности понять в какую категорию разместить, то кидать в категорию по-умолчанию. Если нужно до создать, ну создам руками + поправлю код скриптов. Вручную я переносил все проводки в течении десятка лет. Уже притомился. Чуть-чуть автоматизировал - уже нереальное облегчение, и меньше ошибок (раньше остатки вообще не сходились, по пять раз пере проверял…).

DALDON ★★★★★
() автор топика
Ответ на: комментарий от DALDON

Формат банковской выгрузки не менялся уже много лет (это, кстати, звоночек, на самом деле. Ну да ладно).

на самом деле это нормально, особенно для банков, потому что там в бухгалтерии в основном дремучие тетеньки которые не любят перемен им сложно осознать и подстраиваться под все новое, даже если это просто перестановка столбцов в таблице местами.

В общем-то, все что вам нужно это изучить любой язык программирования и ту часть его стандартной библиотеки или сторонней библиотеки, которая умеет работать с csv, шаблон формата файла который точно импортирует mmex тоже легко получить, просто сделав экспорт из mmex в csv, а потом из ваших проводок нагенерировав такой же только с данными из проводок и результат этой генерации импортировать снова в mmex в общем-то и все. Начинайте читать, пробуйте реализовать свой скрипт.

abcq ★★
()
Ответ на: комментарий от abcq

все новое, даже если это просто перестановка столбцов в таблице местами

Я стесняюсь спросить, а в чём польза от такой «новизны», как перестановка (всем привычных уже) столбцов местами?

LamerOk ★★★★★
()
Ответ на: комментарий от LamerOk

ну это был просто пример чего-нибудь такого не особо значительного, но повергающего в панику ) Как вариант могу придумать что этот столбец опционален и его задвинули при генерации в самый конец потому что в большинстве случаев он не используется, а до этого он поближе к началу и в основном почти всегда пустовал без дела, так нормально?

abcq ★★
()
Ответ на: комментарий от LamerOk

тетенек с бухгалтерии которым уже давно пора на пенсию - запросто, даже если каждой лично на служебную почту послать по письму с тем, какие изменения коснулись последнего патча ПО, они естественно читать этого не будут, а если и прочитают, то все равно поднимут панику, что не могут ничего найти и что им нужно показать, рассказать, и вообще раньше было лучше ) Может даже дойти до того, что они просто поднимут панику если система скажем соприкосаемая с другими отделами, и у них допустим что-то поменялось, они про это прознали, и начинается гонево вида, вы что-то поменяли мы не знаем что, но нам не нравится, все как-то работает не так, раньше шрифт был больше, а у нас плохое зрение, при этом вы как разработчик ничего не меняли, и люди которые их саппортят только чертыхаются разводя руками :3

abcq ★★
()
Последнее исправление: abcq (всего исправлений: 1)

Немножко о Python

Пишет сын отцу.
Папа хочу стать IT-шником и изучить какой-нибудь язык программирования

Дарагой сын.   

Если ты будэшь харашо учыться, то я пошлю тэбя на курсы Rust.

Если ты будэшь учыться на тройки, то я пошлю тэбя на курсы Python,  чтобы все выдэлы какой ты ДУРАК.
anonymous
()
Ответ на: комментарий от adn

Тоже не вижу каких-то киллер фич у Pycharm, которых нет в VSCode. Разве что это готовое решение, а VSCode чуть настроить надо. Но вообще PyCharm довольно opiniated в некоторых моментах.

kukuruku ★★
()

Как это лучше всего сделать?

Сесть и составить ТЗ. Хотя бы для себя.

anonymous
()
Ответ на: комментарий от kukuruku

Разве что это готовое решение, а VSCode чуть настроить надо.

Так и про вим можно сказать

Единственное что заставляет хотя бы держать вскод в системе это совместная отладка крестов и питона в cython, в пичарме чёт не взлетела

upcFrost ★★★★★
()
Последнее исправление: upcFrost (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.