From 0f30fdb9f4fa5f5677e3f1743a0d7a6336fd868b Mon Sep 17 00:00:00 2001 From: Yutsuo Date: Thu, 5 Sep 2024 17:19:35 -0300 Subject: [PATCH] updates --- lab.ipynb | 2181 +++++++++++++++++++++++++++++++++++++++++++++++ pdfScrape.ipynb | 499 ----------- pdfquery.py | 11 - robopato.sql | 21 +- 4 files changed, 2191 insertions(+), 521 deletions(-) create mode 100644 lab.ipynb delete mode 100644 pdfScrape.ipynb delete mode 100644 pdfquery.py diff --git a/lab.ipynb b/lab.ipynb new file mode 100644 index 0000000..1c4496f --- /dev/null +++ b/lab.ipynb @@ -0,0 +1,2181 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "test_file = 'OUROCARD_VISA_INFINITE-Ago_24.txt'" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "with open('OUROCARD_VISA_INFINITE-Ago_24.txt', 'r') as reader:\n", + " data = reader.read()\n", + " print(data)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import re\n", + "\n", + "# Open the text file\n", + "with open('OUROCARD_VISA_INFINITE-Ago_24.txt', 'r') as file_name:\n", + " # Read the contents of the file\n", + " contents = file_name.read()\n", + "\n", + "# Define the regex pattern to match\n", + "pattern = r'\\d{2}\\.\\d{2}\\.\\d{4}.{23}.{14}.{2}\\s*\\d+,\\d{2}\\s*\\d+,\\d{2}'\n", + "\n", + "# Iterate over the lines that match the pattern\n", + "for matches in re.finditer(pattern, contents):\n", + " print(matches.group())" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import re\n", + "\n", + "# Open the text file\n", + "with open('OUROCARD_VISA_INFINITE-Ago_24.txt', 'r') as file_name:\n", + " # Read the contents of the file\n", + " contents = file_name.read()\n", + "\n", + "# Define the regex pattern to match\n", + "pattern = r'.*DANIEL.*|.*IZABELY.*'\n", + "\n", + "# Iterate over the lines that match the pattern\n", + "for matches in re.finditer(pattern, contents):\n", + " print(matches.group())" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import re\n", + "\n", + "# Open the text file\n", + "with open('OUROCARD_VISA_INFINITE-Ago_24.txt', 'r') as file_name:\n", + " # Read the contents of the file\n", + " contents = file_name.read()\n", + "\n", + "# Define the regex patterns\n", + "dan_pattern = r'*DANIEL.*'\n", + "iza_pattern = r'.*IZABELY.*'\n", + "line_pattern = r'\\d{2}\\.\\d{2}\\.\\d{4}.{23}.{14}.{2}\\s*\\d+,\\d{2}\\s*\\d+,\\d{2}'\n", + "\n", + "# Iterate over the lines that match the pattern\n", + "for matches in re.finditer(line_pattern, contents):\n", + " print(matches.group())\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Open the text file\n", + "with open('table-test.txt', 'r') as file_name:\n", + " # Read the contents of the file\n", + " contents = file_name.readlines()\n", + "\n", + "# Initialize lists to store the lines under each table\n", + "table_a_lines = []\n", + "table_b_lines = []\n", + "\n", + "# Flag to determine which table section we are in\n", + "current_table = None\n", + "\n", + "# Iterate over the lines in the file\n", + "for line in contents:\n", + " line = line.strip() # Remove leading and trailing whitespace\n", + "\n", + " # Check for TABLEA and TABLEB\n", + " if line == 'TABLEA':\n", + " current_table = 'TABLEA'\n", + " elif line == 'TABLEB':\n", + " current_table = 'TABLEB'\n", + " else:\n", + " # Add lines to the appropriate list based on the current table\n", + " if current_table == 'TABLEA':\n", + " table_a_lines.append(line)\n", + " elif current_table == 'TABLEB':\n", + " table_b_lines.append(line)\n", + "\n", + "# Print the results\n", + "print('Lines under TABLEA:')\n", + "for data in table_a_lines:\n", + " print(data)\n", + "\n", + "print('\\nLines under TABLEB:')\n", + "for data in table_b_lines:\n", + " print(data)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import re\n", + "from datetime import date, datetime\n", + "import locale\n", + "\n", + "locale.setlocale(locale.LC_ALL, 'pt_BR.UTF-8')\n", + "\n", + "# Open the text file\n", + "with open('OUROCARD_VISA_INFINITE-Ago_24.txt', 'r', encoding='latin') as file_name:\n", + " # Read the contents of the file\n", + " contents = file_name.readlines()\n", + "\n", + "# Define the regex patterns\n", + "dan_pattern = r'1 - DANIEL.*'\n", + "iza_pattern = r'4 - IZABELY.*'\n", + "line_pattern = r'\\d{2}\\.\\d{2}\\.\\d{4}.{23}.{14}.{2}\\s*\\d+,\\d{2}\\s*\\d+,\\d{2}'\n", + "line_group_pattern = r'(\\d{2})\\.(\\d{2})\\.(\\d{4})(.{23})(.{14})(.{2})(\\s*\\d+,\\d{2})(\\s*\\d+,\\d{2})'\n", + "\n", + "# Lists\n", + "list_dan = []\n", + "list_iza = []\n", + "current_list = None\n", + "\n", + "insert_bulk = []\n", + "\n", + "# Iterate all lines\n", + "for line in contents:\n", + " line = line.strip()\n", + " if re.match(dan_pattern, line):\n", + " current_list = 'list_dan'\n", + " print('found Dan')\n", + " elif re.match(iza_pattern, line):\n", + " current_list = 'list_iza'\n", + " print('found Iza')\n", + " else:\n", + " if re.match(line_pattern, line):\n", + " if current_list == 'list_dan':\n", + " print(\"dan\", line)\n", + " list_dan.append(line)\n", + " if current_list == 'list_iza':\n", + " print(\"iza\", line)\n", + " list_iza.append(line)\n", + "\n", + "print('list_dan - tuples for insert')\n", + "for item in list_dan:\n", + " matches = re.search(line_group_pattern, item)\n", + " tTdate = str(date(int(matches.group(3)), int(matches.group(2)), int(matches.group(1))))\n", + " tAccount = 1\n", + " tMemo = matches.group(4)\n", + " tCity = matches.group(5)\n", + " tCountry = matches.group(6)\n", + " tOutflow = matches.group(7).strip().replace(',', '.')\n", + " tInflow = matches.group(8).strip().replace(',', '.')\n", + " tOwner = 1\n", + " tInstallments = 1\n", + " tCreated = str(datetime.now(tz=None))\n", + " tUpdated = None\n", + " insert_bulk.append(( tTdate, tAccount, tMemo, tCity, tCountry, tOutflow, tInflow, tOwner, tInstallments, tCreated, tUpdated ))\n", + "\n", + "print('list_dan - tuples for insert')\n", + "for item in list_iza:\n", + " matches = re.search(line_group_pattern, item)\n", + " tTdate = str(date(int(matches.group(3)), int(matches.group(2)), int(matches.group(1))))\n", + " tAccount = 1\n", + " tMemo = matches.group(4)\n", + " tCity = matches.group(5)\n", + " tCountry = matches.group(6)\n", + " tOutflow = matches.group(7).strip().replace(',', '.')\n", + " tInflow = matches.group(8).strip().replace(',', '.')\n", + " tOwner = 2\n", + " tInstallments = 1\n", + " tCreated = str(datetime.now(tz=None))\n", + " tUpdated = None\n", + " insert_bulk.append(( tTdate, tAccount, tMemo, tCity, tCountry, tOutflow, tInflow, tOwner, tInstallments, tCreated, tUpdated ))\n" + ] + }, + { + "cell_type": "code", + "execution_count": 92, + "metadata": {}, + "outputs": [], + "source": [ + "insert_query = \"INSERT INTO default.TRANSACTION (TDATE, ACCOUNTID, MEMO, COUNTRY, OUTFLOW, INFLOW, OWNERID, INSTALLMENT_NR, INSTALLMENT_TT, CREATED, UPDATED) VALUES ( %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s )\"" + ] + }, + { + "cell_type": "code", + "execution_count": 97, + "metadata": {}, + "outputs": [], + "source": [ + "# OUROCARD_VISA_INFINITE-Próxima_Fatura.txt\n", + "# OUROCARD_VISA_INFINITE-Ago_24.txt\n", + "def create_lists():\n", + " import re\n", + "\n", + " # Open the text file\n", + " # with open(\"OUROCARD_VISA_INFINITE-Próxima_Fatura.txt\", \"r\", encoding=\"latin\") as file:\n", + " with open(\"OUROCARD_VISA_INFINITE-Ago_24.txt\", \"r\", encoding=\"latin\") as file:\n", + " # Read the contents of the file\n", + " contents = file.readlines()\n", + "\n", + " # Define the regex patterns\n", + " owner_pattern = r\"\\d\\s?-\\s?([A-Z]+)\"\n", + " line_pattern = r\"\\d{2}\\.\\d{2}\\.\\d{4}.{23}.{14}.{2}\\s*-?\\d*\\.?\\d+,\\d{2}\\s*\\d+,\\d{2}\"\n", + " payment_pattern = (r\"\\d{2}\\.\\d{2}\\.\\d{4}PGTO.*200211(\\s*-?\\d*\\.?\\d+,\\d{2})(\\s*\\d+,\\d{2})\")\n", + " partial_invoice_line_pattern = r\"\\d{2}\\/\\d{2}.{27}.{16}.{2}\\s+\\s*-?\\d*\\.?\\d+,\\d{2}\\s*\\d+,\\d{2}\"\n", + "\n", + " # Lists\n", + " current_list = None\n", + " owner_list = []\n", + " result = {}\n", + "\n", + " silly_counter = 1\n", + " isPartial = True\n", + "\n", + " # Find Owners\n", + " for line in contents:\n", + " line = line.strip()\n", + "\n", + " found_owners = re.findall(owner_pattern, line)\n", + " if found_owners:\n", + " for owner_name in found_owners:\n", + " list_name = f\"list_{owner_name.lower()}\"\n", + " owner_list.append(list_name)\n", + " result[list_name] = {}\n", + " result[list_name][\"owner_name\"] = owner_name\n", + " result[list_name][\"owner_id\"] = silly_counter\n", + " silly_counter = silly_counter + 1\n", + "\n", + " # Treat and create transaction lists\n", + " for line in contents:\n", + " line = line.strip()\n", + "\n", + " if re.match(owner_pattern, line):\n", + " found_owner = re.match(owner_pattern, line)\n", + " owner_list = f\"list_{found_owner.group(1).lower()}\"\n", + " current_list = owner_list\n", + " result[current_list][\"tlist\"] = []\n", + " else:\n", + " if re.match(payment_pattern, line):\n", + " result[current_list][\"tlist\"].append(line)\n", + " elif re.match(line_pattern, line) or re.match(partial_invoice_line_pattern, line):\n", + " result[current_list][\"tlist\"].append(line)\n", + "\n", + " # Check file pattern\n", + " sample = result[current_list][\"tlist\"][0]\n", + " if re.match(line_pattern, sample):\n", + " isPartial = False\n", + "\n", + " for listObj in result:\n", + " result[listObj][\"isPartial\"] = isPartial\n", + "\n", + " return result" + ] + }, + { + "cell_type": "code", + "execution_count": 90, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{'list_daniel': {'owner_name': 'DANIEL', 'owner_id': 1, 'tlist': ['13/08 DL*GOOGLE YouTub SAO PAULO BR 41,90 0,00', '12/08 STEAM PURCHASE SEATTLE DE 24,00 0,00', '13/08 STEAMGAMES.COM 42595229912-1844160 WA 24,00 0,00', '15/08 VELOE BARUERI BR 22,26 0,00', '14/08 IFD*Lucas Tomaz Da SilvOsasco BR 5,00 0,00', '16/08 UBER* TRIP WWW.UBER.COM. BR 30,98 0,00', '16/08 UBER* TRIP WWW.UBER.COM. BR 5,00 0,00', '16/08 UBER* TRIP WWW.UBER.COM. BR 26,59 0,00', '16/08 UBER* TRIP WWW.UBER.COM. BR 5,00 0,00', '16/08 DROGARIA SAO PAULO BRASILIA BR 1.219,44 0,00', '16/08 IFD*Josue Cardoso De SoOsasco BR 10,00 0,00', '18/08 NETFLIX ENTRETENIMENTO BARUERI BR 44,90 0,00', '18/08 IFD*Pedro Henrique BarbOsasco BR 10,00 0,00', '20/08 PAG*FolhaDeSPaulo SAO PAULO BR 29,90 0,00', '20/08 MERCADOLIVRE*ROMEROSHOPOSASCO BR 125,89 0,00', '21/08 CANTINA E CIA BRASILIA BR 8,50 0,00', '21/08 TRACKEFIELD BRASILIA BR 1.259,20 0,00', '21/08 MULTIPLAN BRASILIA BR 25,00 0,00', '22/08 PAG*XsollaGames Sao Paulo BR 26,99 0,00', '22/08 CANTINA E CIA BRASILIA BR 19,00 0,00', '22/08 CINEMARK BRASIL SAO PAULO BR 18,24 0,00', '22/08 PAGUE MENOS 1225 BRASILIA BR 52,97 0,00', '23/08 MERCADOLIVRE*SOLDIERSNUOSASCO BR 288,70 0,00', '22/08 MR JOHN BARBEARIA LTDA BRASILIA BR 60,00 0,00', '14/08 WINE GARDEN BRASILIA BR 261,51 0,00', '14/08 IFD*KATSU HMK BAR E RESBRASILIA BR 65,99 0,00', '16/08 IFD*TACO PEP RESTAURANTBRASILIA BR 232,90 0,00', '18/08 IFD*IFOOD.COM AGENCIA DOsasco BR 12,90 0,00', '18/08 IFD*H.L.F HAMBURGUERIA BRASILIA BR 159,59 0,00', '16/08 LISTO *CLINICAESTETIC BRASILIA BR 1.330,00 0,00', '11/04 PRODUTOS GLOB PARC 05/12 RIO DE JANEI BR 44,90 0,00', '15/01 MP*MUNDODOSCO PARC 08/10 SAO PAULO BR 159,90 0,00', '17/05 PAG*Folhadesp PARC 04/06 Sao Paulo BR 109,60 0,00', '14/08 IOF - COMPRA NO EXTERIOR 0,26 0,00', '14/08 IOF - COMPRA NO EXTERIOR 0,26 0,00'], 'isPartial': True}, 'list_izabely': {'owner_name': 'IZABELY', 'owner_id': 2, 'tlist': ['12/08 UBER* TRIP WWW.UBER.COM. BR 6,90 0,00', '14/08 BrasilC*SHOPPING ENXOV Brasilia BR 319,96 0,00', '15/08 UBER* ONE OSASCO BR 19,90 0,00', '14/08 UBER * PENDING SAO PAULO BR 37,14 0,00', '18/08 DROGARIO ROSARIO BRASILIA BR 252,05 0,00', '20/08 DiogoLealPimenta BRASILIA BR 86,00 0,00', '20/08 DROGASIL 2067 BRASILIA BR 226,96 0,00', '20/08 IFD*O PUDIM PERFEITO FABRASILIA BR 89,90 0,00', '21/08 UBER* TRIP WWW.UBER.COM. BR 6,18 0,00', '21/08 MERCADOLIVRE*3PRODUTOS OSASCO BR 113,80 0,00', '21/08 MERCADOLIVRE*3PRODUTOS OSASCO BR 65,96 0,00', '22/08 UBER* TRIP WWW.UBER.COM. BR 39,91 0,00', '21/08 Nestle Brasil LTDA. Sao Paulo BR 230,00 0,00', '22/08 UBER * PENDING SAO PAULO BR 5,81 0,00', '13/08 RESTAURANTE FAROFINA BRASILIA BR 96,80 0,00', '14/08 LE VIN BRASILIA BR 160,47 0,00', '14/08 Bacio di Latte-LJ3080 Brasilia BR 20,95 0,00', '16/08 FRAN S CAFE BRASILIA BR 20,40 0,00', '17/08 CAPPUCCINO BRASILIA BR 211,31 0,00', '18/08 CASA ALMERIA BRASILIA BR 231,72 0,00', '17/01 BRASILIA EMPR PARC 08/12 BRASILIA BR 599,00 0,00'], 'isPartial': True}}\n" + ] + } + ], + "source": [ + "print(create_lists())" + ] + }, + { + "cell_type": "code", + "execution_count": 94, + "metadata": {}, + "outputs": [], + "source": [ + "def build_insert(input_dict: dict, account: int):\n", + " from datetime import date, datetime\n", + " import re\n", + "\n", + " insert_bulk = []\n", + "\n", + " # RegEx Patterns\n", + " line_group_pattern = r\"(?P\\d{2})\\.(?P\\d{2})\\.(?P\\d{4})(?:(?P.+PARC (?P\\d+.)\\/(?P\\d+)\\s.{12})|(?P.{37}))(?P.{2})(?P\\s*-?\\d*\\.?\\d+,\\d{2})(?P\\s*\\d*\\.?\\d+,\\d{2})\"\n", + " partial_invoice_group_pattern = r\"(?P\\d{2})\\/(?P\\d{2})(?:(?P.+PARC (?P\\d{2})\\/(?P\\d{2}).{15})|(?P.{43}))(?P.{2})(?P\\s+\\s*-?\\d*\\.?\\d+,\\d{2})(?P\\s*\\d+,\\d{2})\"\n", + " payment_pattern = r\"(?P\\d{2})\\.(?P\\d{2})\\.(?P\\d{4})(?PPGTO DEBITO CONTA).*200211(?P\\s*-?\\d*\\.?\\d+,\\d{2})(?P\\s*\\d+,\\d{2})\"\n", + "\n", + " for key in input_dict:\n", + " if input_dict[key][\"isPartial\"]:\n", + " pattern_to_use = partial_invoice_group_pattern\n", + " else:\n", + " pattern_to_use = line_group_pattern\n", + "\n", + " for item in input_dict[key][\"tlist\"]:\n", + " # check for payment\n", + " matches = re.match(payment_pattern, item)\n", + " if matches:\n", + " tTdate = str(\n", + " date(\n", + " int(matches.group(\"year\")),\n", + " int(matches.group(\"month\")),\n", + " int(matches.group(\"day\")),\n", + " )\n", + " )\n", + " tAccount = account\n", + " tMemo = matches.group(\"memo\")\n", + " tCountry = None\n", + " tOutflow = None\n", + " tInflow = matches.group(\"inflow\").strip().replace(\".\", \"\").replace(\",\", \".\").replace(\"-\", \"\")\n", + " tOwner = input_dict[key][\"owner_id\"]\n", + " tInstallmentNr = None\n", + " tInstallmentTt = None\n", + " tCreated = str(datetime.now(tz=None))\n", + " tUpdated = None\n", + " else:\n", + " matches = re.match(pattern_to_use, item)\n", + " tTdate = str(\n", + " date(\n", + " # partial files will not have the year data on transactions\n", + " int(matches.group(\"year\")) if pattern_to_use == line_group_pattern else datetime.now().year,\n", + " int(matches.group(\"month\")),\n", + " int(matches.group(\"day\")),\n", + " )\n", + " )\n", + " \n", + " tAccount = account\n", + "\n", + " tMemo = matches.group(\"p_memo\") if matches.group(\"p_memo\") else matches.group(\"memo\")\n", + " tInstallmentNr = int(matches.group(\"p_nr\")) if matches.group(\"p_nr\") else None\n", + " tInstallmentTt = int(matches.group(\"p_tt\")) if matches.group(\"p_tt\") else None\n", + "\n", + " tCountry = matches.group(\"country\")\n", + " tOutflow = matches.group(\"outflow\").strip().replace(\".\", \"\").replace(\",\", \".\")\n", + " tInflow = matches.group(\"inflow\").strip().replace(\".\", \"\").replace(\",\", \".\")\n", + " tOwner = input_dict[key][\"owner_id\"]\n", + "\n", + " tCreated = str(datetime.now(tz=None))\n", + " tUpdated = None\n", + " insert_bulk.append(\n", + " (\n", + " tTdate,\n", + " tAccount,\n", + " tMemo,\n", + " tCountry,\n", + " tOutflow,\n", + " tInflow,\n", + " tOwner,\n", + " tInstallmentNr,\n", + " tInstallmentTt,\n", + " tCreated,\n", + " tUpdated,\n", + " )\n", + " )\n", + "\n", + " return insert_bulk" + ] + }, + { + "cell_type": "code", + "execution_count": 87, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[('2024-07-25',\n", + " 1,\n", + " 'PGTO DEBITO CONTA',\n", + " None,\n", + " None,\n", + " None,\n", + " '24420.24',\n", + " 1,\n", + " None,\n", + " None,\n", + " '2024-09-05 16:46:27.087701',\n", + " None),\n", + " ('2024-07-15',\n", + " 1,\n", + " 'NEW EMPAR EMPREENDIMENT',\n", + " 'CORUMBA DE GO ',\n", + " 'BR',\n", + " '10.00',\n", + " '0.00',\n", + " 1,\n", + " None,\n", + " None,\n", + " '2024-09-05 16:46:27.087701',\n", + " None),\n", + " ('2024-07-14',\n", + " 1,\n", + " 'NAZO SUSHI BAR ',\n", + " 'BRASILIA ',\n", + " 'BR',\n", + " '446.22',\n", + " '0.00',\n", + " 1,\n", + " None,\n", + " None,\n", + " '2024-09-05 16:46:27.087701',\n", + " None),\n", + " ('2024-07-18',\n", + " 1,\n", + " 'IFD*IFOOD.COM AGENCIA D',\n", + " 'Osasco ',\n", + " 'BR',\n", + " '12.90',\n", + " '0.00',\n", + " 1,\n", + " None,\n", + " None,\n", + " '2024-09-05 16:46:27.088229',\n", + " None),\n", + " ('2024-07-19',\n", + " 1,\n", + " 'IFD*RC MELO COMERCIO D ',\n", + " 'BRASILIA ',\n", + " 'BR',\n", + " '138.30',\n", + " '0.00',\n", + " 1,\n", + " None,\n", + " None,\n", + " '2024-09-05 16:46:27.088229',\n", + " None),\n", + " ('2024-07-21',\n", + " 1,\n", + " 'GRUPO FARTURA DE HORTI ',\n", + " 'BRASILIA ',\n", + " 'BR',\n", + " '105.79',\n", + " '0.00',\n", + " 1,\n", + " None,\n", + " None,\n", + " '2024-09-05 16:46:27.088229',\n", + " None),\n", + " ('2024-07-20',\n", + " 1,\n", + " 'IFD*JL COMERCIO VAREJIS',\n", + " 'BRASILIA ',\n", + " 'BR',\n", + " '134.70',\n", + " '0.00',\n", + " 1,\n", + " None,\n", + " None,\n", + " '2024-09-05 16:46:27.088229',\n", + " None),\n", + " ('2024-07-22',\n", + " 1,\n", + " 'MURAKAMI ',\n", + " 'BRASILIA ',\n", + " 'BR',\n", + " '55.90',\n", + " '0.00',\n", + " 1,\n", + " None,\n", + " None,\n", + " '2024-09-05 16:46:27.088229',\n", + " None),\n", + " ('2024-07-22',\n", + " 1,\n", + " 'ZP *CANTINAGOODLANCHEV ',\n", + " 'Brasilia ',\n", + " 'BR',\n", + " '8.40',\n", + " '0.00',\n", + " 1,\n", + " None,\n", + " None,\n", + " '2024-09-05 16:46:27.088229',\n", + " None),\n", + " ('2024-07-23',\n", + " 1,\n", + " 'CANTINA E CIA ',\n", + " 'BRASILIA ',\n", + " 'BR',\n", + " '10.00',\n", + " '0.00',\n", + " 1,\n", + " None,\n", + " None,\n", + " '2024-09-05 16:46:27.088229',\n", + " None),\n", + " ('2024-07-25',\n", + " 1,\n", + " 'CANTINA E CIA ',\n", + " 'BRASILIA ',\n", + " 'BR',\n", + " '3.50',\n", + " '0.00',\n", + " 1,\n", + " None,\n", + " None,\n", + " '2024-09-05 16:46:27.088229',\n", + " None),\n", + " ('2024-07-24',\n", + " 1,\n", + " 'IFD*NFE COMERCIO DE ALI',\n", + " 'BRASILIA ',\n", + " 'BR',\n", + " '101.89',\n", + " '0.00',\n", + " 1,\n", + " None,\n", + " None,\n", + " '2024-09-05 16:46:27.088229',\n", + " None),\n", + " ('2024-07-27',\n", + " 1,\n", + " 'BENITA PANINOTECA ',\n", + " 'BRASILIA ',\n", + " 'BR',\n", + " '156.80',\n", + " '0.00',\n", + " 1,\n", + " None,\n", + " None,\n", + " '2024-09-05 16:46:27.088229',\n", + " None),\n", + " ('2024-07-26',\n", + " 1,\n", + " 'IFD*BSQUARE PIZZA BURGE',\n", + " 'BRASILIA ',\n", + " 'BR',\n", + " '123.99',\n", + " '0.00',\n", + " 1,\n", + " None,\n", + " None,\n", + " '2024-09-05 16:46:27.088229',\n", + " None),\n", + " ('2024-08-04',\n", + " 1,\n", + " 'IFD*RC MELO COMERCIO DE',\n", + " 'BRASILIA ',\n", + " 'BR',\n", + " '103.29',\n", + " '0.00',\n", + " 1,\n", + " None,\n", + " None,\n", + " '2024-09-05 16:46:27.088229',\n", + " None),\n", + " ('2024-08-06',\n", + " 1,\n", + " 'CANTINA E CIA ',\n", + " 'BRASILIA ',\n", + " 'BR',\n", + " '6.00',\n", + " '0.00',\n", + " 1,\n", + " None,\n", + " None,\n", + " '2024-09-05 16:46:27.088229',\n", + " None),\n", + " ('2024-08-06',\n", + " 1,\n", + " 'ZP *CANTINAGOODLANCHEV ',\n", + " 'Brasilia ',\n", + " 'BR',\n", + " '210.00',\n", + " '0.00',\n", + " 1,\n", + " None,\n", + " None,\n", + " '2024-09-05 16:46:27.088229',\n", + " None),\n", + " ('2024-08-07',\n", + " 1,\n", + " 'IFD*BSQUARE PIZZA BURGE',\n", + " 'BRASILIA ',\n", + " 'BR',\n", + " '232.99',\n", + " '0.00',\n", + " 1,\n", + " None,\n", + " None,\n", + " '2024-09-05 16:46:27.088229',\n", + " None),\n", + " ('2024-07-22',\n", + " 1,\n", + " 'DROGASIL 2067 ',\n", + " 'BRASILIA ',\n", + " 'BR',\n", + " '204.99',\n", + " '0.00',\n", + " 1,\n", + " None,\n", + " None,\n", + " '2024-09-05 16:46:27.088229',\n", + " None),\n", + " ('2024-07-22',\n", + " 1,\n", + " 'REDE BRASIL DRUGSTORE ',\n", + " 'BRASILIA ',\n", + " 'BR',\n", + " '26.74',\n", + " '0.00',\n", + " 1,\n", + " None,\n", + " None,\n", + " '2024-09-05 16:46:27.088229',\n", + " None),\n", + " ('2024-08-10',\n", + " 1,\n", + " 'PAGUE MENOS 1225 ',\n", + " 'BRASILIA ',\n", + " 'BR',\n", + " '406.30',\n", + " '0.00',\n", + " 1,\n", + " None,\n", + " None,\n", + " '2024-09-05 16:46:27.088229',\n", + " None),\n", + " ('2024-07-13',\n", + " 1,\n", + " 'PAG*EduardoMeireles ',\n", + " 'AGUAS LINDAS ',\n", + " 'BR',\n", + " '14.00',\n", + " '0.00',\n", + " 1,\n", + " None,\n", + " None,\n", + " '2024-09-05 16:46:27.088229',\n", + " None),\n", + " ('2024-07-13',\n", + " 1,\n", + " 'MR JOHN BARBEARIA LTDA ',\n", + " 'BRASILIA ',\n", + " 'BR',\n", + " '60.00',\n", + " '0.00',\n", + " 1,\n", + " None,\n", + " None,\n", + " '2024-09-05 16:46:27.088229',\n", + " None),\n", + " ('2024-07-18',\n", + " 1,\n", + " 'NETFLIX.COM ',\n", + " 'SAO PAULO ',\n", + " 'BR',\n", + " '44.90',\n", + " '0.00',\n", + " 1,\n", + " None,\n", + " None,\n", + " '2024-09-05 16:46:27.088229',\n", + " None),\n", + " ('2024-07-19',\n", + " 1,\n", + " 'PAG*FolhaDeSPaulo ',\n", + " 'SAO PAULO ',\n", + " 'BR',\n", + " '29.90',\n", + " '0.00',\n", + " 1,\n", + " None,\n", + " None,\n", + " '2024-09-05 16:46:27.088229',\n", + " None),\n", + " ('2024-07-19',\n", + " 1,\n", + " 'IFD*CR EXPRESS ',\n", + " 'Osasco ',\n", + " 'BR',\n", + " '10.00',\n", + " '0.00',\n", + " 1,\n", + " None,\n", + " None,\n", + " '2024-09-05 16:46:27.088229',\n", + " None),\n", + " ('2024-07-22',\n", + " 1,\n", + " 'APPLE.COM/BILL ',\n", + " 'SAO PAULO ',\n", + " 'BR',\n", + " '97.90',\n", + " '0.00',\n", + " 1,\n", + " None,\n", + " None,\n", + " '2024-09-05 16:46:27.088229',\n", + " None),\n", + " ('2024-07-22',\n", + " 1,\n", + " 'MERCADOLIVRE*MERCADOLIV',\n", + " 'OSASCO ',\n", + " 'BR',\n", + " '444.40',\n", + " '0.00',\n", + " 1,\n", + " None,\n", + " None,\n", + " '2024-09-05 16:46:27.088229',\n", + " None),\n", + " ('2024-07-25',\n", + " 1,\n", + " 'MP*5PRODUTOS ',\n", + " 'OSASCO ',\n", + " 'BR',\n", + " '308.93',\n", + " '0.00',\n", + " 1,\n", + " None,\n", + " None,\n", + " '2024-09-05 16:46:27.088229',\n", + " None),\n", + " ('2024-07-25',\n", + " 1,\n", + " 'MERCADOLIVRE*SABORESDAM',\n", + " 'OSASCO ',\n", + " 'BR',\n", + " '258.00',\n", + " '0.00',\n", + " 1,\n", + " None,\n", + " None,\n", + " '2024-09-05 16:46:27.088229',\n", + " None),\n", + " ('2024-07-27',\n", + " 1,\n", + " 'MP*MELIMAIS ',\n", + " 'OSASCO ',\n", + " 'BR',\n", + " '17.99',\n", + " '0.00',\n", + " 1,\n", + " None,\n", + " None,\n", + " '2024-09-05 16:46:27.088229',\n", + " None),\n", + " ('2024-07-27',\n", + " 1,\n", + " 'Wellhub Gympass BR Gymp',\n", + " 'Sao Paulo ',\n", + " 'BR',\n", + " '399.90',\n", + " '0.00',\n", + " 1,\n", + " None,\n", + " None,\n", + " '2024-09-05 16:46:27.088229',\n", + " None),\n", + " ('2024-07-26',\n", + " 1,\n", + " 'IFD*CR EXPRESS ',\n", + " 'Osasco ',\n", + " 'BR',\n", + " '10.00',\n", + " '0.00',\n", + " 1,\n", + " None,\n", + " None,\n", + " '2024-09-05 16:46:27.088229',\n", + " None),\n", + " ('2024-07-28',\n", + " 1,\n", + " 'SAMS CLUB BRASI 4929 ',\n", + " 'BRASILIA ',\n", + " 'BR',\n", + " '2256.92',\n", + " '0.00',\n", + " 1,\n", + " None,\n", + " None,\n", + " '2024-09-05 16:46:27.088229',\n", + " None),\n", + " ('2024-07-29',\n", + " 1,\n", + " 'MG LAVA JATO ',\n", + " 'BRASILIA ',\n", + " 'BR',\n", + " '100.00',\n", + " '0.00',\n", + " 1,\n", + " None,\n", + " None,\n", + " '2024-09-05 16:46:27.088229',\n", + " None),\n", + " ('2024-07-29',\n", + " 1,\n", + " 'MERCADOLIVRE*GLDECOR ',\n", + " 'OSASCO ',\n", + " 'BR',\n", + " '50.75',\n", + " '0.00',\n", + " 1,\n", + " None,\n", + " None,\n", + " '2024-09-05 16:46:27.088229',\n", + " None),\n", + " ('2024-08-01',\n", + " 1,\n", + " 'MR JOHN BARBEARIA LTDA ',\n", + " 'BRASILIA ',\n", + " 'BR',\n", + " '54.00',\n", + " '0.00',\n", + " 1,\n", + " None,\n", + " None,\n", + " '2024-09-05 16:46:27.088229',\n", + " None),\n", + " ('2024-08-04',\n", + " 1,\n", + " 'APPLE.COM/BILL ',\n", + " 'SAO PAULO ',\n", + " 'BR',\n", + " '54.90',\n", + " '0.00',\n", + " 1,\n", + " None,\n", + " None,\n", + " '2024-09-05 16:46:27.088229',\n", + " None),\n", + " ('2024-08-04',\n", + " 1,\n", + " 'IFD*SCORPIONS EXPRESS ',\n", + " 'Osasco ',\n", + " 'BR',\n", + " '10.00',\n", + " '0.00',\n", + " 1,\n", + " None,\n", + " None,\n", + " '2024-09-05 16:46:27.088229',\n", + " None),\n", + " ('2024-08-08',\n", + " 1,\n", + " 'CASCOL COMBUSTIVEIS ',\n", + " 'BRASILIA ',\n", + " 'BR',\n", + " '239.37',\n", + " '0.00',\n", + " 1,\n", + " None,\n", + " None,\n", + " '2024-09-05 16:46:27.088229',\n", + " None),\n", + " ('2024-08-07',\n", + " 1,\n", + " 'IFD*GRAN LOG EXPRESS ',\n", + " 'Osasco ',\n", + " 'BR',\n", + " '10.00',\n", + " '0.00',\n", + " 1,\n", + " None,\n", + " None,\n", + " '2024-09-05 16:46:27.088229',\n", + " None),\n", + " ('2024-08-09',\n", + " 1,\n", + " 'SUPERAUTOR C*Supe ',\n", + " 'NITEROI ',\n", + " 'BR',\n", + " '247.86',\n", + " '0.00',\n", + " 1,\n", + " None,\n", + " None,\n", + " '2024-09-05 16:46:27.088229',\n", + " None),\n", + " ('2024-08-09',\n", + " 1,\n", + " 'UBER* TRIP ',\n", + " 'WWW.UBER.COM. ',\n", + " 'BR',\n", + " '30.89',\n", + " '0.00',\n", + " 1,\n", + " None,\n", + " None,\n", + " '2024-09-05 16:46:27.088229',\n", + " None),\n", + " ('2024-08-09',\n", + " 1,\n", + " 'UBER *TRIP HELP.UBER.CO',\n", + " 'SAO PAULO ',\n", + " 'BR',\n", + " '10.00',\n", + " '0.00',\n", + " 1,\n", + " None,\n", + " None,\n", + " '2024-09-05 16:46:27.088229',\n", + " None),\n", + " ('2024-08-09',\n", + " 1,\n", + " 'UBER * PENDING ',\n", + " 'SAO PAULO ',\n", + " 'BR',\n", + " '27.93',\n", + " '0.00',\n", + " 1,\n", + " None,\n", + " None,\n", + " '2024-09-05 16:46:27.088229',\n", + " None),\n", + " ('2024-08-09',\n", + " 1,\n", + " 'UBER *TRIP HELP.UBER.CO',\n", + " 'SAO PAULO ',\n", + " 'BR',\n", + " '5.00',\n", + " '0.00',\n", + " 1,\n", + " None,\n", + " None,\n", + " '2024-09-05 16:46:27.088229',\n", + " None),\n", + " ('2024-07-15',\n", + " 1,\n", + " 'VELOE ',\n", + " 'BARUERI ',\n", + " 'BR',\n", + " '22.26',\n", + " '0.00',\n", + " 1,\n", + " None,\n", + " None,\n", + " '2024-09-05 16:46:27.088229',\n", + " None),\n", + " ('2024-07-19',\n", + " 1,\n", + " 'POUSADA PIRENEUS RESOR ',\n", + " 'PIRENOPOLIS ',\n", + " 'BR',\n", + " '179.21',\n", + " '0.00',\n", + " 1,\n", + " None,\n", + " None,\n", + " '2024-09-05 16:46:27.088229',\n", + " None),\n", + " ('2024-07-13',\n", + " 1,\n", + " 'DL*GOOGLE YouTub ',\n", + " 'SAO PAULO ',\n", + " 'BR',\n", + " '41.90',\n", + " '0.00',\n", + " 1,\n", + " None,\n", + " None,\n", + " '2024-09-05 16:46:27.088229',\n", + " None),\n", + " ('2024-07-16',\n", + " 1,\n", + " 'STEAMGAMES.COM 42595229',\n", + " '912-1844160 ',\n", + " 'WA',\n", + " '24.00',\n", + " '0.00',\n", + " 1,\n", + " None,\n", + " None,\n", + " '2024-09-05 16:46:27.088229',\n", + " None),\n", + " ('2024-07-16',\n", + " 1,\n", + " 'IOF - COMPRA NO EXTERIO',\n", + " 'R ',\n", + " ' ',\n", + " '0.26',\n", + " '0.00',\n", + " 1,\n", + " None,\n", + " None,\n", + " '2024-09-05 16:46:27.088229',\n", + " None),\n", + " ('2024-07-16',\n", + " 1,\n", + " 'STEAM PURCHASE ',\n", + " 'SEATTLE ',\n", + " 'DE',\n", + " '127.19',\n", + " '0.00',\n", + " 1,\n", + " None,\n", + " None,\n", + " '2024-09-05 16:46:27.088229',\n", + " None),\n", + " ('2024-07-18',\n", + " 1,\n", + " 'IOF - COMPRA NO EXTERIO',\n", + " 'R ',\n", + " ' ',\n", + " '1.39',\n", + " '0.00',\n", + " 1,\n", + " None,\n", + " None,\n", + " '2024-09-05 16:46:27.088229',\n", + " None),\n", + " ('2024-07-22',\n", + " 1,\n", + " 'PAG*XsollaGames ',\n", + " 'Sao Paulo ',\n", + " 'BR',\n", + " '26.99',\n", + " '0.00',\n", + " 1,\n", + " None,\n", + " None,\n", + " '2024-09-05 16:46:27.088229',\n", + " None),\n", + " ('2024-04-11',\n", + " 1,\n", + " 'PRODUTOS GLOB PARC 04/12',\n", + " ' RIO DE JANEI',\n", + " 'BR',\n", + " '44.90',\n", + " '0.00',\n", + " 1,\n", + " 4,\n", + " 12,\n", + " '2024-09-05 16:46:27.088229',\n", + " None),\n", + " ('2024-01-15',\n", + " 1,\n", + " 'MP*MUNDODOSCO PARC 07/10',\n", + " ' SAO PAULO ',\n", + " 'BR',\n", + " '159.90',\n", + " '0.00',\n", + " 1,\n", + " 7,\n", + " 10,\n", + " '2024-09-05 16:46:27.088229',\n", + " None),\n", + " ('2024-05-17',\n", + " 1,\n", + " 'PAG*Folhadesp PARC 03/06',\n", + " ' Sao Paulo ',\n", + " 'BR',\n", + " '109.60',\n", + " '0.00',\n", + " 1,\n", + " 3,\n", + " 6,\n", + " '2024-09-05 16:46:27.088229',\n", + " None),\n", + " ('2023-10-17',\n", + " 1,\n", + " 'BIANCHINI AUT PARC 10/10',\n", + " ' BRASILIA ',\n", + " 'BR',\n", + " '535.00',\n", + " '0.00',\n", + " 1,\n", + " 10,\n", + " 10,\n", + " '2024-09-05 16:46:27.088229',\n", + " None),\n", + " ('2024-05-27',\n", + " 1,\n", + " 'PARC=112 BRAS PARC 03/12',\n", + " ' BRASILIA ',\n", + " 'BR',\n", + " '452.00',\n", + " '0.00',\n", + " 1,\n", + " 3,\n", + " 12,\n", + " '2024-09-05 16:46:27.088229',\n", + " None),\n", + " ('2024-07-15',\n", + " 1,\n", + " 'SALTO CORUMBA ',\n", + " 'CORUMBA DE GO ',\n", + " 'BR',\n", + " '163.85',\n", + " '0.00',\n", + " 2,\n", + " None,\n", + " None,\n", + " '2024-09-05 16:46:27.088229',\n", + " None),\n", + " ('2024-07-12',\n", + " 1,\n", + " 'PG *TON MINHACANTINA ',\n", + " 'BRASILIA ',\n", + " 'BR',\n", + " '35.00',\n", + " '0.00',\n", + " 2,\n", + " None,\n", + " None,\n", + " '2024-09-05 16:46:27.088229',\n", + " None),\n", + " ('2024-07-12',\n", + " 1,\n", + " 'PASTELARIA VICOSA IV ',\n", + " 'BRASILIA ',\n", + " 'BR',\n", + " '130.00',\n", + " '0.00',\n", + " 2,\n", + " None,\n", + " None,\n", + " '2024-09-05 16:46:27.088229',\n", + " None),\n", + " ('2024-07-12',\n", + " 1,\n", + " 'PASTELARIA VICOSA IV ',\n", + " 'BRASILIA ',\n", + " 'BR',\n", + " '19.00',\n", + " '0.00',\n", + " 2,\n", + " None,\n", + " None,\n", + " '2024-09-05 16:46:27.088229',\n", + " None),\n", + " ('2024-07-13',\n", + " 1,\n", + " 'CANTINA E CIA ',\n", + " 'BRASILIA ',\n", + " 'BR',\n", + " '4.50',\n", + " '0.00',\n", + " 2,\n", + " None,\n", + " None,\n", + " '2024-09-05 16:46:27.088229',\n", + " None),\n", + " ('2024-07-18',\n", + " 1,\n", + " 'MERCADOLIVRE*3PRODUTOS ',\n", + " 'OSASCO ',\n", + " 'BR',\n", + " '362.28',\n", + " '0.00',\n", + " 2,\n", + " None,\n", + " None,\n", + " '2024-09-05 16:46:27.088229',\n", + " None),\n", + " ('2024-07-20',\n", + " 1,\n", + " 'COFFEE BIKE CAFES ESPEC',\n", + " 'BRASILIA ',\n", + " 'BR',\n", + " '10.00',\n", + " '0.00',\n", + " 2,\n", + " None,\n", + " None,\n", + " '2024-09-05 16:46:27.088229',\n", + " None),\n", + " ('2024-07-19',\n", + " 1,\n", + " 'IFD*ARCOS DOURADOS COME',\n", + " 'BRASILIA ',\n", + " 'BR',\n", + " '48.99',\n", + " '0.00',\n", + " 2,\n", + " None,\n", + " None,\n", + " '2024-09-05 16:46:27.088229',\n", + " None),\n", + " ('2024-07-22',\n", + " 1,\n", + " 'RESTAURANTE FAROFINA ',\n", + " 'BRASILIA ',\n", + " 'BR',\n", + " '43.90',\n", + " '0.00',\n", + " 2,\n", + " None,\n", + " None,\n", + " '2024-09-05 16:46:27.088229',\n", + " None),\n", + " ('2024-07-23',\n", + " 1,\n", + " 'PAG*DiogoLealPimenta ',\n", + " 'BRASILIA ',\n", + " 'BR',\n", + " '183.00',\n", + " '0.00',\n", + " 2,\n", + " None,\n", + " None,\n", + " '2024-09-05 16:46:27.088229',\n", + " None),\n", + " ('2024-07-28',\n", + " 1,\n", + " 'TREVISO GALETERIA E P ',\n", + " 'BRASILIA ',\n", + " 'BR',\n", + " '200.20',\n", + " '0.00',\n", + " 2,\n", + " None,\n", + " None,\n", + " '2024-09-05 16:46:27.088229',\n", + " None),\n", + " ('2024-07-30',\n", + " 1,\n", + " 'OLINDA COMIDA NORDESTI ',\n", + " 'BRASILIA ',\n", + " 'BR',\n", + " '66.45',\n", + " '0.00',\n", + " 2,\n", + " None,\n", + " None,\n", + " '2024-09-05 16:46:27.088229',\n", + " None),\n", + " ('2024-08-03',\n", + " 1,\n", + " 'DULCE PATAGONIA ',\n", + " 'BRASILIA ',\n", + " 'BR',\n", + " '177.90',\n", + " '0.00',\n", + " 2,\n", + " None,\n", + " None,\n", + " '2024-09-05 16:46:27.088229',\n", + " None),\n", + " ('2024-08-03',\n", + " 1,\n", + " 'HOT DOG CLUB ',\n", + " 'BRASILIA ',\n", + " 'BR',\n", + " '39.90',\n", + " '0.00',\n", + " 2,\n", + " None,\n", + " None,\n", + " '2024-09-05 16:46:27.088229',\n", + " None),\n", + " ('2024-08-04',\n", + " 1,\n", + " 'RESTAURANTE SAO JOAO ',\n", + " 'TERESINA ',\n", + " 'BR',\n", + " '108.00',\n", + " '0.00',\n", + " 2,\n", + " None,\n", + " None,\n", + " '2024-09-05 16:46:27.088229',\n", + " None),\n", + " ('2024-08-04',\n", + " 1,\n", + " 'GELATO E GRANO ',\n", + " 'TERESINA ',\n", + " 'BR',\n", + " '24.00',\n", + " '0.00',\n", + " 2,\n", + " None,\n", + " None,\n", + " '2024-09-05 16:46:27.088229',\n", + " None),\n", + " ('2024-08-05',\n", + " 1,\n", + " 'F L L MELO LTDA ',\n", + " 'SAO PAULO ',\n", + " 'BR',\n", + " '63.00',\n", + " '0.00',\n", + " 2,\n", + " None,\n", + " None,\n", + " '2024-09-05 16:46:27.088229',\n", + " None),\n", + " ('2024-08-10',\n", + " 1,\n", + " 'CREMERIA ITALIANA ',\n", + " 'BRASILIA ',\n", + " 'BR',\n", + " '49.00',\n", + " '0.00',\n", + " 2,\n", + " None,\n", + " None,\n", + " '2024-09-05 16:46:27.088229',\n", + " None),\n", + " ('2024-07-14',\n", + " 1,\n", + " 'RITUARIA*Rituaria ',\n", + " 'SAO PAULO ',\n", + " 'BR',\n", + " '448.20',\n", + " '0.00',\n", + " 2,\n", + " None,\n", + " None,\n", + " '2024-09-05 16:46:27.088229',\n", + " None),\n", + " ('2024-07-24',\n", + " 1,\n", + " 'BIOEXATA FARMACIA ',\n", + " 'BRASILIA ',\n", + " 'BR',\n", + " '73.70',\n", + " '0.00',\n", + " 2,\n", + " None,\n", + " None,\n", + " '2024-09-05 16:46:27.088229',\n", + " None),\n", + " ('2024-07-12',\n", + " 1,\n", + " 'CASCOL COMBUSTIVEIS ',\n", + " 'BRASILIA ',\n", + " 'BR',\n", + " '297.86',\n", + " '0.00',\n", + " 2,\n", + " None,\n", + " None,\n", + " '2024-09-05 16:46:27.088229',\n", + " None),\n", + " ('2024-07-12',\n", + " 1,\n", + " 'LIMBER SOFTWARE E CONS ',\n", + " 'SAO LUIZ DO P ',\n", + " 'BR',\n", + " '54.00',\n", + " '0.00',\n", + " 2,\n", + " None,\n", + " None,\n", + " '2024-09-05 16:46:27.088229',\n", + " None),\n", + " ('2024-07-13',\n", + " 1,\n", + " 'PAG*EduardoMeireles ',\n", + " 'AGUAS LINDAS ',\n", + " 'BR',\n", + " '22.00',\n", + " '0.00',\n", + " 2,\n", + " None,\n", + " None,\n", + " '2024-09-05 16:46:27.088229',\n", + " None),\n", + " ('2024-07-13',\n", + " 1,\n", + " 'PAG*EduardoMeireles ',\n", + " 'AGUAS LINDAS ',\n", + " 'BR',\n", + " '36.00',\n", + " '0.00',\n", + " 2,\n", + " None,\n", + " None,\n", + " '2024-09-05 16:46:27.088229',\n", + " None),\n", + " ('2024-07-13',\n", + " 1,\n", + " 'PAG*CidaRommanel ',\n", + " 'BRASILIA ',\n", + " 'BR',\n", + " '30.00',\n", + " '0.00',\n", + " 2,\n", + " None,\n", + " None,\n", + " '2024-09-05 16:46:27.088229',\n", + " None),\n", + " ('2024-07-13',\n", + " 1,\n", + " 'ALLPARK EMPREENDIMENTOS',\n", + " 'Goiania ',\n", + " 'BR',\n", + " '6.00',\n", + " '0.00',\n", + " 2,\n", + " None,\n", + " None,\n", + " '2024-09-05 16:46:27.088229',\n", + " None),\n", + " ('2024-07-14',\n", + " 1,\n", + " 'MERCADOLIVRE*CHINALINK ',\n", + " 'OSASCO ',\n", + " 'BR',\n", + " '445.89',\n", + " '0.00',\n", + " 2,\n", + " None,\n", + " None,\n", + " '2024-09-05 16:46:27.088229',\n", + " None),\n", + " ('2024-07-18',\n", + " 1,\n", + " 'PG *S S MENDES COMERCI ',\n", + " 'MOGI DAS CRUZ ',\n", + " 'BR',\n", + " '150.12',\n", + " '0.00',\n", + " 2,\n", + " None,\n", + " None,\n", + " '2024-09-05 16:46:27.088229',\n", + " None),\n", + " ('2024-07-19',\n", + " 1,\n", + " 'MERCADOLIVRE*3PRODUTOS ',\n", + " 'OSASCO ',\n", + " 'BR',\n", + " '276.52',\n", + " '0.00',\n", + " 2,\n", + " None,\n", + " None,\n", + " '2024-09-05 16:46:27.088229',\n", + " None),\n", + " ('2024-08-03',\n", + " 1,\n", + " 'WOW*SALE COMERCIO E SE ',\n", + " 'Brasilia ',\n", + " 'BR',\n", + " '165.00',\n", + " '0.00',\n", + " 2,\n", + " None,\n", + " None,\n", + " '2024-09-05 16:46:27.088229',\n", + " None),\n", + " ('2024-08-07',\n", + " 1,\n", + " 'PARENTELA PANIFICADORA ',\n", + " 'BRASILIA ',\n", + " 'BR',\n", + " '64.90',\n", + " '0.00',\n", + " 2,\n", + " None,\n", + " None,\n", + " '2024-09-05 16:46:27.088229',\n", + " None),\n", + " ('2024-08-08',\n", + " 1,\n", + " 'FranciscoDeAssis ',\n", + " 'BRASILIA ',\n", + " 'BR',\n", + " '36.00',\n", + " '0.00',\n", + " 2,\n", + " None,\n", + " None,\n", + " '2024-09-05 16:46:27.088229',\n", + " None),\n", + " ('2024-08-09',\n", + " 1,\n", + " 'BONNAPAN SEU DIA MAIS ',\n", + " 'BRASILIA ',\n", + " 'BR',\n", + " '23.08',\n", + " '0.00',\n", + " 2,\n", + " None,\n", + " None,\n", + " '2024-09-05 16:46:27.088229',\n", + " None),\n", + " ('2024-08-10',\n", + " 1,\n", + " 'MP*BRILHODASARTE ',\n", + " 'OSASCO ',\n", + " 'BR',\n", + " '300.00',\n", + " '0.00',\n", + " 2,\n", + " None,\n", + " None,\n", + " '2024-09-05 16:46:27.088229',\n", + " None),\n", + " ('2024-07-11',\n", + " 1,\n", + " 'CARREFOUR PL2 338 ',\n", + " 'BRASILIA ',\n", + " 'BR',\n", + " '83.17',\n", + " '0.00',\n", + " 2,\n", + " None,\n", + " None,\n", + " '2024-09-05 16:46:27.088229',\n", + " None),\n", + " ('2024-07-15',\n", + " 1,\n", + " 'UBER * PENDING ',\n", + " 'SAO PAULO ',\n", + " 'BR',\n", + " '19.90',\n", + " '0.00',\n", + " 2,\n", + " None,\n", + " None,\n", + " '2024-09-05 16:46:27.088229',\n", + " None),\n", + " ('2024-07-22',\n", + " 1,\n", + " 'UBER * PENDING ',\n", + " 'SAO PAULO ',\n", + " 'BR',\n", + " '8.98',\n", + " '0.00',\n", + " 2,\n", + " None,\n", + " None,\n", + " '2024-09-05 16:46:27.088739',\n", + " None),\n", + " ('2024-07-23',\n", + " 1,\n", + " 'UBER* TRIP ',\n", + " 'WWW.UBER.COM. ',\n", + " 'BR',\n", + " '8.90',\n", + " '0.00',\n", + " 2,\n", + " None,\n", + " None,\n", + " '2024-09-05 16:46:27.088739',\n", + " None),\n", + " ('2024-07-24',\n", + " 1,\n", + " 'UBER* TRIP ',\n", + " 'WWW.UBER.COM. ',\n", + " 'BR',\n", + " '8.98',\n", + " '0.00',\n", + " 2,\n", + " None,\n", + " None,\n", + " '2024-09-05 16:46:27.088739',\n", + " None),\n", + " ('2024-07-29',\n", + " 1,\n", + " 'UBER * PENDING ',\n", + " 'SAO PAULO ',\n", + " 'BR',\n", + " '8.94',\n", + " '0.00',\n", + " 2,\n", + " None,\n", + " None,\n", + " '2024-09-05 16:46:27.088739',\n", + " None),\n", + " ('2024-07-30',\n", + " 1,\n", + " 'UBER* TRIP ',\n", + " 'WWW.UBER.COM. ',\n", + " 'BR',\n", + " '8.94',\n", + " '0.00',\n", + " 2,\n", + " None,\n", + " None,\n", + " '2024-09-05 16:46:27.088739',\n", + " None),\n", + " ('2024-07-31',\n", + " 1,\n", + " 'UBER* TRIP ',\n", + " 'WWW.UBER.COM. ',\n", + " 'BR',\n", + " '8.96',\n", + " '0.00',\n", + " 2,\n", + " None,\n", + " None,\n", + " '2024-09-05 16:46:27.088739',\n", + " None),\n", + " ('2024-08-06',\n", + " 1,\n", + " 'UBER* TRIP ',\n", + " 'WWW.UBER.COM. ',\n", + " 'BR',\n", + " '8.99',\n", + " '0.00',\n", + " 2,\n", + " None,\n", + " None,\n", + " '2024-09-05 16:46:27.088739',\n", + " None),\n", + " ('2024-08-10',\n", + " 1,\n", + " 'UBER* TRIP ',\n", + " 'WWW.UBER.COM. ',\n", + " 'BR',\n", + " '20.00',\n", + " '0.00',\n", + " 2,\n", + " None,\n", + " None,\n", + " '2024-09-05 16:46:27.088739',\n", + " None),\n", + " ('2024-08-10',\n", + " 1,\n", + " 'UBER* TRIP ',\n", + " 'WWW.UBER.COM. ',\n", + " 'BR',\n", + " '9.42',\n", + " '0.00',\n", + " 2,\n", + " None,\n", + " None,\n", + " '2024-09-05 16:46:27.088739',\n", + " None),\n", + " ('2024-08-10',\n", + " 1,\n", + " 'UBER * PENDING ',\n", + " 'SAO PAULO ',\n", + " 'BR',\n", + " '13.97',\n", + " '0.00',\n", + " 2,\n", + " None,\n", + " None,\n", + " '2024-09-05 16:46:27.088739',\n", + " None),\n", + " ('2024-07-12',\n", + " 1,\n", + " 'CIDA REIS MODA FITNESS ',\n", + " 'BRASILIA ',\n", + " 'BR',\n", + " '300.00',\n", + " '0.00',\n", + " 2,\n", + " None,\n", + " None,\n", + " '2024-09-05 16:46:27.088739',\n", + " None),\n", + " ('2024-07-15',\n", + " 1,\n", + " 'LANCHONETE SERRA RODO ',\n", + " 'COCALZINHO DE ',\n", + " 'BR',\n", + " '43.00',\n", + " '0.00',\n", + " 2,\n", + " None,\n", + " None,\n", + " '2024-09-05 16:46:27.088739',\n", + " None),\n", + " ('2024-07-16',\n", + " 1,\n", + " 'POUSADA PIRENEUS RESOR ',\n", + " 'PIRENOPOLIS ',\n", + " 'BR',\n", + " '1704.00',\n", + " '0.00',\n", + " 2,\n", + " None,\n", + " None,\n", + " '2024-09-05 16:46:27.088739',\n", + " None),\n", + " ('2024-07-19',\n", + " 1,\n", + " 'POUSADA PIRENEUS RESOR ',\n", + " 'PIRENOPOLIS ',\n", + " 'BR',\n", + " '1105.63',\n", + " '0.00',\n", + " 2,\n", + " None,\n", + " None,\n", + " '2024-09-05 16:46:27.088739',\n", + " None),\n", + " ('2024-08-09',\n", + " 1,\n", + " 'HOTEL GOYA P*hote ',\n", + " 'RIO DE JANEIR ',\n", + " 'BR',\n", + " '424.20',\n", + " '0.00',\n", + " 2,\n", + " None,\n", + " None,\n", + " '2024-09-05 16:46:27.088739',\n", + " None),\n", + " ('2024-04-12',\n", + " 1,\n", + " 'LISTO*CLINICA PARC 04/04',\n", + " ' BRASILIA ',\n", + " 'BR',\n", + " '2000.00',\n", + " '0.00',\n", + " 2,\n", + " 4,\n", + " 4,\n", + " '2024-09-05 16:46:27.088739',\n", + " None),\n", + " ('2024-01-17',\n", + " 1,\n", + " 'BRASILIA EMPR PARC 07/12',\n", + " ' BRASILIA ',\n", + " 'BR',\n", + " '599.00',\n", + " '0.00',\n", + " 2,\n", + " 7,\n", + " 12,\n", + " '2024-09-05 16:46:27.088739',\n", + " None),\n", + " ('2024-01-07',\n", + " 1,\n", + " 'PG *B4A GLAMB PARC 08/12',\n", + " ' SAO PAULO ',\n", + " 'BR',\n", + " '74.90',\n", + " '0.00',\n", + " 2,\n", + " 8,\n", + " 12,\n", + " '2024-09-05 16:46:27.088739',\n", + " None)]" + ] + }, + "execution_count": 87, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "build_insert(create_lists(), 1)" + ] + }, + { + "cell_type": "code", + "execution_count": 95, + "metadata": {}, + "outputs": [], + "source": [ + "def db_insert(insert_bulk: list[tuple]):\n", + " from mysql.connector import connect, Error\n", + "\n", + " try:\n", + " with connect(\n", + " host=\"localhost\",\n", + " user=\"root\",\n", + " password=\"pleasehashapasswordomg\",\n", + " database=\"default\",\n", + " ) as connection:\n", + " print(\"CONNECTED!\", connection)\n", + " with connection.cursor() as cursor:\n", + " cursor.executemany(insert_query, insert_bulk)\n", + " connection.commit()\n", + " print(\"DONE!\")\n", + " except Error as e:\n", + " print(e)\n", + " finally:\n", + " connection.close()" + ] + }, + { + "cell_type": "code", + "execution_count": 98, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "CONNECTED! \n", + "DONE!\n" + ] + } + ], + "source": [ + "db_insert(build_insert(create_lists(), 1))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "build_insert(create_lists(), 1)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "create_lists()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "dictTest = {\n", + " \"owner1\": {\n", + " \"owner_label\": \"foo\",\n", + " \"owner_id\": 1,\n", + " \"list1\": [\"thingies, thingies, 42\"],\n", + " },\n", + " \"owner2\": {\n", + " \"owner_label\": \"bar\",\n", + " \"owner_id\": 2,\n", + " \"list1\": [\"thingies, thingies, 42\"],\n", + " },\n", + "}\n", + "\n", + "for owner in dictTest:\n", + " print(dictTest[owner][\"owner_id\"], dictTest[owner][\"owner_label\"])\n", + " for item in dictTest[owner][\"list1\"]:\n", + " print(item)\n", + "\n", + "dictTest[\"owner1\"][\"owner_label\"] = \"yadda\"\n", + "\n", + "for owner in dictTest:\n", + " print(dictTest[owner][\"owner_id\"], dictTest[owner][\"owner_label\"])\n", + " for item in dictTest[owner][\"list1\"]:\n", + " print(item)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "param1 = \"foo\"\n", + "param2 = \"bar\"\n", + "testy = {}\n", + "testy[param1] = {}\n", + "testy[param1][param2] = [\"what\", \"when\", \"why\"]\n", + "testy[param1][\"number\"] = 1\n", + "\n", + "print(testy)" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "25.07.2024PGTO DEBITO CONTA 8611 000006025 200211 -24.420,24 0,00\n", + "15.07.2024NEW EMPAR EMPREENDIMENTCORUMBA DE GO BR 10,00 0,00\n", + "14.07.2024NAZO SUSHI BAR BRASILIA BR 446,22 0,00\n", + "18.07.2024IFD*IFOOD.COM AGENCIA DOsasco BR 12,90 0,00\n", + "19.07.2024IFD*RC MELO COMERCIO D BRASILIA BR 138,30 0,00\n", + "21.07.2024GRUPO FARTURA DE HORTI BRASILIA BR 105,79 0,00\n", + "20.07.2024IFD*JL COMERCIO VAREJISBRASILIA BR 134,70 0,00\n", + "22.07.2024MURAKAMI BRASILIA BR 55,90 0,00\n", + "22.07.2024ZP *CANTINAGOODLANCHEV Brasilia BR 8,40 0,00\n", + "23.07.2024CANTINA E CIA BRASILIA BR 10,00 0,00\n", + "25.07.2024CANTINA E CIA BRASILIA BR 3,50 0,00\n", + "24.07.2024IFD*NFE COMERCIO DE ALIBRASILIA BR 101,89 0,00\n", + "27.07.2024BENITA PANINOTECA BRASILIA BR 156,80 0,00\n", + "26.07.2024IFD*BSQUARE PIZZA BURGEBRASILIA BR 123,99 0,00\n", + "04.08.2024IFD*RC MELO COMERCIO DEBRASILIA BR 103,29 0,00\n", + "06.08.2024CANTINA E CIA BRASILIA BR 6,00 0,00\n", + "06.08.2024ZP *CANTINAGOODLANCHEV Brasilia BR 210,00 0,00\n", + "07.08.2024IFD*BSQUARE PIZZA BURGEBRASILIA BR 232,99 0,00\n", + "22.07.2024DROGASIL 2067 BRASILIA BR 204,99 0,00\n", + "22.07.2024REDE BRASIL DRUGSTORE BRASILIA BR 26,74 0,00\n", + "10.08.2024PAGUE MENOS 1225 BRASILIA BR 406,30 0,00\n", + "13.07.2024PAG*EduardoMeireles AGUAS LINDAS BR 14,00 0,00\n", + "13.07.2024MR JOHN BARBEARIA LTDA BRASILIA BR 60,00 0,00\n", + "18.07.2024NETFLIX.COM SAO PAULO BR 44,90 0,00\n", + "19.07.2024PAG*FolhaDeSPaulo SAO PAULO BR 29,90 0,00\n", + "19.07.2024IFD*CR EXPRESS Osasco BR 10,00 0,00\n", + "22.07.2024APPLE.COM/BILL SAO PAULO BR 97,90 0,00\n", + "22.07.2024MERCADOLIVRE*MERCADOLIVOSASCO BR 444,40 0,00\n", + "25.07.2024MP*5PRODUTOS OSASCO BR 308,93 0,00\n", + "25.07.2024MERCADOLIVRE*SABORESDAMOSASCO BR 258,00 0,00\n", + "27.07.2024MP*MELIMAIS OSASCO BR 17,99 0,00\n", + "27.07.2024Wellhub Gympass BR GympSao Paulo BR 399,90 0,00\n", + "26.07.2024IFD*CR EXPRESS Osasco BR 10,00 0,00\n", + "28.07.2024SAMS CLUB BRASI 4929 BRASILIA BR 2.256,92 0,00\n", + "29.07.2024MG LAVA JATO BRASILIA BR 100,00 0,00\n", + "29.07.2024MERCADOLIVRE*GLDECOR OSASCO BR 50,75 0,00\n", + "01.08.2024MR JOHN BARBEARIA LTDA BRASILIA BR 54,00 0,00\n", + "04.08.2024APPLE.COM/BILL SAO PAULO BR 54,90 0,00\n", + "04.08.2024IFD*SCORPIONS EXPRESS Osasco BR 10,00 0,00\n", + "08.08.2024CASCOL COMBUSTIVEIS BRASILIA BR 239,37 0,00\n", + "07.08.2024IFD*GRAN LOG EXPRESS Osasco BR 10,00 0,00\n", + "09.08.2024SUPERAUTOR C*Supe NITEROI BR 247,86 0,00\n", + "09.08.2024UBER* TRIP WWW.UBER.COM. BR 30,89 0,00\n", + "09.08.2024UBER *TRIP HELP.UBER.COSAO PAULO BR 10,00 0,00\n", + "09.08.2024UBER * PENDING SAO PAULO BR 27,93 0,00\n", + "09.08.2024UBER *TRIP HELP.UBER.COSAO PAULO BR 5,00 0,00\n", + "15.07.2024VELOE BARUERI BR 22,26 0,00\n", + "19.07.2024POUSADA PIRENEUS RESOR PIRENOPOLIS BR 179,21 0,00\n", + "13.07.2024DL*GOOGLE YouTub SAO PAULO BR 41,90 0,00\n", + "16.07.2024STEAMGAMES.COM 42595229912-1844160 WA 24,00 0,00\n", + "16.07.2024IOF - COMPRA NO EXTERIOR 0,26 0,00\n", + "16.07.2024STEAM PURCHASE SEATTLE DE 127,19 0,00\n", + "18.07.2024IOF - COMPRA NO EXTERIOR 1,39 0,00\n", + "22.07.2024PAG*XsollaGames Sao Paulo BR 26,99 0,00\n", + "11.04.2024PRODUTOS GLOB PARC 04/12 RIO DE JANEIBR 44,90 0,00\n", + "15.01.2024MP*MUNDODOSCO PARC 07/10 SAO PAULO BR 159,90 0,00\n", + "17.05.2024PAG*Folhadesp PARC 03/06 Sao Paulo BR 109,60 0,00\n", + "17.10.2023BIANCHINI AUT PARC 10/10 BRASILIA BR 535,00 0,00\n", + "27.05.2024PARC=112 BRAS PARC 03/12 BRASILIA BR 452,00 0,00\n" + ] + }, + { + "ename": "KeyError", + "evalue": "'tlist'", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mKeyError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[1;32mIn[19], line 4\u001b[0m\n\u001b[0;32m 1\u001b[0m bigDict \u001b[38;5;241m=\u001b[39m {\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mlist_daniel\u001b[39m\u001b[38;5;124m'\u001b[39m: {\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mowner_name\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mDANIEL\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mowner_id\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;241m1\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mtlist\u001b[39m\u001b[38;5;124m'\u001b[39m: [\u001b[38;5;124m'\u001b[39m\u001b[38;5;124m25.07.2024PGTO DEBITO CONTA 8611 000006025 200211 -24.420,24 0,00\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m15.07.2024NEW EMPAR EMPREENDIMENTCORUMBA DE GO BR 10,00 0,00\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m14.07.2024NAZO SUSHI BAR BRASILIA BR 446,22 0,00\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m18.07.2024IFD*IFOOD.COM AGENCIA DOsasco BR 12,90 0,00\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m19.07.2024IFD*RC MELO COMERCIO D BRASILIA BR 138,30 0,00\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m21.07.2024GRUPO FARTURA DE HORTI BRASILIA BR 105,79 0,00\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m20.07.2024IFD*JL COMERCIO VAREJISBRASILIA BR 134,70 0,00\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m22.07.2024MURAKAMI BRASILIA BR 55,90 0,00\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m22.07.2024ZP *CANTINAGOODLANCHEV Brasilia BR 8,40 0,00\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m23.07.2024CANTINA E CIA BRASILIA BR 10,00 0,00\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m25.07.2024CANTINA E CIA BRASILIA BR 3,50 0,00\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m24.07.2024IFD*NFE COMERCIO DE ALIBRASILIA BR 101,89 0,00\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m27.07.2024BENITA PANINOTECA BRASILIA BR 156,80 0,00\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m26.07.2024IFD*BSQUARE PIZZA BURGEBRASILIA BR 123,99 0,00\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m04.08.2024IFD*RC MELO COMERCIO DEBRASILIA BR 103,29 0,00\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m06.08.2024CANTINA E CIA BRASILIA BR 6,00 0,00\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m06.08.2024ZP *CANTINAGOODLANCHEV Brasilia BR 210,00 0,00\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m07.08.2024IFD*BSQUARE PIZZA BURGEBRASILIA BR 232,99 0,00\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m22.07.2024DROGASIL 2067 BRASILIA BR 204,99 0,00\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m22.07.2024REDE BRASIL DRUGSTORE BRASILIA BR 26,74 0,00\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m10.08.2024PAGUE MENOS 1225 BRASILIA BR 406,30 0,00\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m13.07.2024PAG*EduardoMeireles AGUAS LINDAS BR 14,00 0,00\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m13.07.2024MR JOHN BARBEARIA LTDA BRASILIA BR 60,00 0,00\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m18.07.2024NETFLIX.COM SAO PAULO BR 44,90 0,00\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m19.07.2024PAG*FolhaDeSPaulo SAO PAULO BR 29,90 0,00\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m19.07.2024IFD*CR EXPRESS Osasco BR 10,00 0,00\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m22.07.2024APPLE.COM/BILL SAO PAULO BR 97,90 0,00\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m22.07.2024MERCADOLIVRE*MERCADOLIVOSASCO BR 444,40 0,00\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m25.07.2024MP*5PRODUTOS OSASCO BR 308,93 0,00\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m25.07.2024MERCADOLIVRE*SABORESDAMOSASCO BR 258,00 0,00\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m27.07.2024MP*MELIMAIS OSASCO BR 17,99 0,00\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m27.07.2024Wellhub Gympass BR GympSao Paulo BR 399,90 0,00\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m26.07.2024IFD*CR EXPRESS Osasco BR 10,00 0,00\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m28.07.2024SAMS CLUB BRASI 4929 BRASILIA BR 2.256,92 0,00\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m29.07.2024MG LAVA JATO BRASILIA BR 100,00 0,00\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m29.07.2024MERCADOLIVRE*GLDECOR OSASCO BR 50,75 0,00\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m01.08.2024MR JOHN BARBEARIA LTDA BRASILIA BR 54,00 0,00\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m04.08.2024APPLE.COM/BILL SAO PAULO BR 54,90 0,00\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m04.08.2024IFD*SCORPIONS EXPRESS Osasco BR 10,00 0,00\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m08.08.2024CASCOL COMBUSTIVEIS BRASILIA BR 239,37 0,00\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m07.08.2024IFD*GRAN LOG EXPRESS Osasco BR 10,00 0,00\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m09.08.2024SUPERAUTOR C*Supe NITEROI BR 247,86 0,00\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m09.08.2024UBER* TRIP WWW.UBER.COM. BR 30,89 0,00\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m09.08.2024UBER *TRIP HELP.UBER.COSAO PAULO BR 10,00 0,00\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m09.08.2024UBER * PENDING SAO PAULO BR 27,93 0,00\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m09.08.2024UBER *TRIP HELP.UBER.COSAO PAULO BR 5,00 0,00\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m15.07.2024VELOE BARUERI BR 22,26 0,00\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m19.07.2024POUSADA PIRENEUS RESOR PIRENOPOLIS BR 179,21 0,00\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m13.07.2024DL*GOOGLE YouTub SAO PAULO BR 41,90 0,00\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m16.07.2024STEAMGAMES.COM 42595229912-1844160 WA 24,00 0,00\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m16.07.2024IOF - COMPRA NO EXTERIOR 0,26 0,00\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m16.07.2024STEAM PURCHASE SEATTLE DE 127,19 0,00\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m18.07.2024IOF - COMPRA NO EXTERIOR 1,39 0,00\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m22.07.2024PAG*XsollaGames Sao Paulo BR 26,99 0,00\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m11.04.2024PRODUTOS GLOB PARC 04/12 RIO DE JANEIBR 44,90 0,00\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m15.01.2024MP*MUNDODOSCO PARC 07/10 SAO PAULO BR 159,90 0,00\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m17.05.2024PAG*Folhadesp PARC 03/06 Sao Paulo BR 109,60 0,00\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m17.10.2023BIANCHINI AUT PARC 10/10 BRASILIA BR 535,00 0,00\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m27.05.2024PARC=112 BRAS PARC 03/12 BRASILIA BR 452,00 0,00\u001b[39m\u001b[38;5;124m'\u001b[39m]}, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mlist_24\u001b[39m\u001b[38;5;124m'\u001b[39m: {\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mowner_name\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m24\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mowner_id\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;241m2\u001b[39m}, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mlist_1844160\u001b[39m\u001b[38;5;124m'\u001b[39m: {\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mowner_name\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m1844160\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mowner_id\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;241m3\u001b[39m}, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mlist_izabely\u001b[39m\u001b[38;5;124m'\u001b[39m: {\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mowner_name\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mIZABELY\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mowner_id\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;241m4\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mtlist\u001b[39m\u001b[38;5;124m'\u001b[39m: [\u001b[38;5;124m'\u001b[39m\u001b[38;5;124m15.07.2024SALTO CORUMBA CORUMBA DE GO BR 163,85 0,00\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m12.07.2024PG *TON MINHACANTINA BRASILIA BR 35,00 0,00\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m12.07.2024PASTELARIA VICOSA IV BRASILIA BR 130,00 0,00\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m12.07.2024PASTELARIA VICOSA IV BRASILIA BR 19,00 0,00\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m13.07.2024CANTINA E CIA BRASILIA BR 4,50 0,00\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m18.07.2024MERCADOLIVRE*3PRODUTOS OSASCO BR 362,28 0,00\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m20.07.2024COFFEE BIKE CAFES ESPECBRASILIA BR 10,00 0,00\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m19.07.2024IFD*ARCOS DOURADOS COMEBRASILIA BR 48,99 0,00\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m22.07.2024RESTAURANTE FAROFINA BRASILIA BR 43,90 0,00\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m23.07.2024PAG*DiogoLealPimenta BRASILIA BR 183,00 0,00\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m28.07.2024TREVISO GALETERIA E P BRASILIA BR 200,20 0,00\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m30.07.2024OLINDA COMIDA NORDESTI BRASILIA BR 66,45 0,00\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m03.08.2024DULCE PATAGONIA BRASILIA BR 177,90 0,00\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m03.08.2024HOT DOG CLUB BRASILIA BR 39,90 0,00\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m04.08.2024RESTAURANTE SAO JOAO TERESINA BR 108,00 0,00\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m04.08.2024GELATO E GRANO TERESINA BR 24,00 0,00\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m05.08.2024F L L MELO LTDA SAO PAULO BR 63,00 0,00\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m10.08.2024CREMERIA ITALIANA BRASILIA BR 49,00 0,00\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m14.07.2024RITUARIA*Rituaria SAO PAULO BR 448,20 0,00\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m24.07.2024BIOEXATA FARMACIA BRASILIA BR 73,70 0,00\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m12.07.2024CASCOL COMBUSTIVEIS BRASILIA BR 297,86 0,00\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m12.07.2024LIMBER SOFTWARE E CONS SAO LUIZ DO P BR 54,00 0,00\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m13.07.2024PAG*EduardoMeireles AGUAS LINDAS BR 22,00 0,00\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m13.07.2024PAG*EduardoMeireles AGUAS LINDAS BR 36,00 0,00\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m13.07.2024PAG*CidaRommanel BRASILIA BR 30,00 0,00\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m13.07.2024ALLPARK EMPREENDIMENTOSGoiania BR 6,00 0,00\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m14.07.2024MERCADOLIVRE*CHINALINK OSASCO BR 445,89 0,00\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m18.07.2024PG *S S MENDES COMERCI MOGI DAS CRUZ BR 150,12 0,00\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m19.07.2024MERCADOLIVRE*3PRODUTOS OSASCO BR 276,52 0,00\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m03.08.2024WOW*SALE COMERCIO E SE Brasilia BR 165,00 0,00\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m07.08.2024PARENTELA PANIFICADORA BRASILIA BR 64,90 0,00\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m08.08.2024FranciscoDeAssis BRASILIA BR 36,00 0,00\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m09.08.2024BONNAPAN SEU DIA MAIS BRASILIA BR 23,08 0,00\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m10.08.2024MP*BRILHODASARTE OSASCO BR 300,00 0,00\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m11.07.2024CARREFOUR PL2 338 BRASILIA BR 83,17 0,00\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m15.07.2024UBER * PENDING SAO PAULO BR 19,90 0,00\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m22.07.2024UBER * PENDING SAO PAULO BR 8,98 0,00\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m23.07.2024UBER* TRIP WWW.UBER.COM. BR 8,90 0,00\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m24.07.2024UBER* TRIP WWW.UBER.COM. BR 8,98 0,00\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m29.07.2024UBER * PENDING SAO PAULO BR 8,94 0,00\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m30.07.2024UBER* TRIP WWW.UBER.COM. BR 8,94 0,00\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m31.07.2024UBER* TRIP WWW.UBER.COM. BR 8,96 0,00\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m06.08.2024UBER* TRIP WWW.UBER.COM. BR 8,99 0,00\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m10.08.2024UBER* TRIP WWW.UBER.COM. BR 20,00 0,00\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m10.08.2024UBER* TRIP WWW.UBER.COM. BR 9,42 0,00\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m10.08.2024UBER * PENDING SAO PAULO BR 13,97 0,00\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m12.07.2024CIDA REIS MODA FITNESS BRASILIA BR 300,00 0,00\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m15.07.2024LANCHONETE SERRA RODO COCALZINHO DE BR 43,00 0,00\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m16.07.2024POUSADA PIRENEUS RESOR PIRENOPOLIS BR 1.704,00 0,00\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m19.07.2024POUSADA PIRENEUS RESOR PIRENOPOLIS BR 1.105,63 0,00\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m09.08.2024HOTEL GOYA P*hote RIO DE JANEIR BR 424,20 0,00\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m12.04.2024LISTO*CLINICA PARC 04/04 BRASILIA BR 2.000,00 0,00\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m17.01.2024BRASILIA EMPR PARC 07/12 BRASILIA BR 599,00 0,00\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m07.01.2024PG *B4A GLAMB PARC 08/12 SAO PAULO BR 74,90 0,00\u001b[39m\u001b[38;5;124m'\u001b[39m]}, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mlist_0\u001b[39m\u001b[38;5;124m'\u001b[39m: {\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mowner_name\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m0\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mowner_id\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;241m6\u001b[39m}}\n\u001b[0;32m 3\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m key \u001b[38;5;129;01min\u001b[39;00m bigDict:\n\u001b[1;32m----> 4\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m item \u001b[38;5;129;01min\u001b[39;00m \u001b[43mbigDict\u001b[49m\u001b[43m[\u001b[49m\u001b[43mkey\u001b[49m\u001b[43m]\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mtlist\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m]\u001b[49m:\n\u001b[0;32m 5\u001b[0m \u001b[38;5;28mprint\u001b[39m(item)\n", + "\u001b[1;31mKeyError\u001b[0m: 'tlist'" + ] + } + ], + "source": [ + "bigDict = {\n", + " \"list_daniel\": {\n", + " \"owner_name\": \"DANIEL\",\n", + " \"owner_id\": 1,\n", + " \"tlist\": [\n", + " \"25.07.2024PGTO DEBITO CONTA 8611 000006025 200211 -24.420,24 0,00\",\n", + " \"15.07.2024NEW EMPAR EMPREENDIMENTCORUMBA DE GO BR 10,00 0,00\",\n", + " \"14.07.2024NAZO SUSHI BAR BRASILIA BR 446,22 0,00\",\n", + " \"18.07.2024IFD*IFOOD.COM AGENCIA DOsasco BR 12,90 0,00\",\n", + " \"19.07.2024IFD*RC MELO COMERCIO D BRASILIA BR 138,30 0,00\",\n", + " \"21.07.2024GRUPO FARTURA DE HORTI BRASILIA BR 105,79 0,00\",\n", + " \"20.07.2024IFD*JL COMERCIO VAREJISBRASILIA BR 134,70 0,00\",\n", + " \"22.07.2024MURAKAMI BRASILIA BR 55,90 0,00\",\n", + " \"22.07.2024ZP *CANTINAGOODLANCHEV Brasilia BR 8,40 0,00\",\n", + " \"23.07.2024CANTINA E CIA BRASILIA BR 10,00 0,00\",\n", + " \"25.07.2024CANTINA E CIA BRASILIA BR 3,50 0,00\",\n", + " \"24.07.2024IFD*NFE COMERCIO DE ALIBRASILIA BR 101,89 0,00\",\n", + " \"27.07.2024BENITA PANINOTECA BRASILIA BR 156,80 0,00\",\n", + " \"26.07.2024IFD*BSQUARE PIZZA BURGEBRASILIA BR 123,99 0,00\",\n", + " \"04.08.2024IFD*RC MELO COMERCIO DEBRASILIA BR 103,29 0,00\",\n", + " \"06.08.2024CANTINA E CIA BRASILIA BR 6,00 0,00\",\n", + " \"06.08.2024ZP *CANTINAGOODLANCHEV Brasilia BR 210,00 0,00\",\n", + " \"07.08.2024IFD*BSQUARE PIZZA BURGEBRASILIA BR 232,99 0,00\",\n", + " \"22.07.2024DROGASIL 2067 BRASILIA BR 204,99 0,00\",\n", + " \"22.07.2024REDE BRASIL DRUGSTORE BRASILIA BR 26,74 0,00\",\n", + " \"10.08.2024PAGUE MENOS 1225 BRASILIA BR 406,30 0,00\",\n", + " \"13.07.2024PAG*EduardoMeireles AGUAS LINDAS BR 14,00 0,00\",\n", + " \"13.07.2024MR JOHN BARBEARIA LTDA BRASILIA BR 60,00 0,00\",\n", + " \"18.07.2024NETFLIX.COM SAO PAULO BR 44,90 0,00\",\n", + " \"19.07.2024PAG*FolhaDeSPaulo SAO PAULO BR 29,90 0,00\",\n", + " \"19.07.2024IFD*CR EXPRESS Osasco BR 10,00 0,00\",\n", + " \"22.07.2024APPLE.COM/BILL SAO PAULO BR 97,90 0,00\",\n", + " \"22.07.2024MERCADOLIVRE*MERCADOLIVOSASCO BR 444,40 0,00\",\n", + " \"25.07.2024MP*5PRODUTOS OSASCO BR 308,93 0,00\",\n", + " \"25.07.2024MERCADOLIVRE*SABORESDAMOSASCO BR 258,00 0,00\",\n", + " \"27.07.2024MP*MELIMAIS OSASCO BR 17,99 0,00\",\n", + " \"27.07.2024Wellhub Gympass BR GympSao Paulo BR 399,90 0,00\",\n", + " \"26.07.2024IFD*CR EXPRESS Osasco BR 10,00 0,00\",\n", + " \"28.07.2024SAMS CLUB BRASI 4929 BRASILIA BR 2.256,92 0,00\",\n", + " \"29.07.2024MG LAVA JATO BRASILIA BR 100,00 0,00\",\n", + " \"29.07.2024MERCADOLIVRE*GLDECOR OSASCO BR 50,75 0,00\",\n", + " \"01.08.2024MR JOHN BARBEARIA LTDA BRASILIA BR 54,00 0,00\",\n", + " \"04.08.2024APPLE.COM/BILL SAO PAULO BR 54,90 0,00\",\n", + " \"04.08.2024IFD*SCORPIONS EXPRESS Osasco BR 10,00 0,00\",\n", + " \"08.08.2024CASCOL COMBUSTIVEIS BRASILIA BR 239,37 0,00\",\n", + " \"07.08.2024IFD*GRAN LOG EXPRESS Osasco BR 10,00 0,00\",\n", + " \"09.08.2024SUPERAUTOR C*Supe NITEROI BR 247,86 0,00\",\n", + " \"09.08.2024UBER* TRIP WWW.UBER.COM. BR 30,89 0,00\",\n", + " \"09.08.2024UBER *TRIP HELP.UBER.COSAO PAULO BR 10,00 0,00\",\n", + " \"09.08.2024UBER * PENDING SAO PAULO BR 27,93 0,00\",\n", + " \"09.08.2024UBER *TRIP HELP.UBER.COSAO PAULO BR 5,00 0,00\",\n", + " \"15.07.2024VELOE BARUERI BR 22,26 0,00\",\n", + " \"19.07.2024POUSADA PIRENEUS RESOR PIRENOPOLIS BR 179,21 0,00\",\n", + " \"13.07.2024DL*GOOGLE YouTub SAO PAULO BR 41,90 0,00\",\n", + " \"16.07.2024STEAMGAMES.COM 42595229912-1844160 WA 24,00 0,00\",\n", + " \"16.07.2024IOF - COMPRA NO EXTERIOR 0,26 0,00\",\n", + " \"16.07.2024STEAM PURCHASE SEATTLE DE 127,19 0,00\",\n", + " \"18.07.2024IOF - COMPRA NO EXTERIOR 1,39 0,00\",\n", + " \"22.07.2024PAG*XsollaGames Sao Paulo BR 26,99 0,00\",\n", + " \"11.04.2024PRODUTOS GLOB PARC 04/12 RIO DE JANEIBR 44,90 0,00\",\n", + " \"15.01.2024MP*MUNDODOSCO PARC 07/10 SAO PAULO BR 159,90 0,00\",\n", + " \"17.05.2024PAG*Folhadesp PARC 03/06 Sao Paulo BR 109,60 0,00\",\n", + " \"17.10.2023BIANCHINI AUT PARC 10/10 BRASILIA BR 535,00 0,00\",\n", + " \"27.05.2024PARC=112 BRAS PARC 03/12 BRASILIA BR 452,00 0,00\",\n", + " ],\n", + " },\n", + " \"list_1844160\": {\"owner_name\": \"1844160\", \"owner_id\": 2},\n", + " \"list_izabely\": {\n", + " \"owner_name\": \"IZABELY\",\n", + " \"owner_id\": 3,\n", + " \"tlist\": [\n", + " \"15.07.2024SALTO CORUMBA CORUMBA DE GO BR 163,85 0,00\",\n", + " \"12.07.2024PG *TON MINHACANTINA BRASILIA BR 35,00 0,00\",\n", + " \"12.07.2024PASTELARIA VICOSA IV BRASILIA BR 130,00 0,00\",\n", + " \"12.07.2024PASTELARIA VICOSA IV BRASILIA BR 19,00 0,00\",\n", + " \"13.07.2024CANTINA E CIA BRASILIA BR 4,50 0,00\",\n", + " \"18.07.2024MERCADOLIVRE*3PRODUTOS OSASCO BR 362,28 0,00\",\n", + " \"20.07.2024COFFEE BIKE CAFES ESPECBRASILIA BR 10,00 0,00\",\n", + " \"19.07.2024IFD*ARCOS DOURADOS COMEBRASILIA BR 48,99 0,00\",\n", + " \"22.07.2024RESTAURANTE FAROFINA BRASILIA BR 43,90 0,00\",\n", + " \"23.07.2024PAG*DiogoLealPimenta BRASILIA BR 183,00 0,00\",\n", + " \"28.07.2024TREVISO GALETERIA E P BRASILIA BR 200,20 0,00\",\n", + " \"30.07.2024OLINDA COMIDA NORDESTI BRASILIA BR 66,45 0,00\",\n", + " \"03.08.2024DULCE PATAGONIA BRASILIA BR 177,90 0,00\",\n", + " \"03.08.2024HOT DOG CLUB BRASILIA BR 39,90 0,00\",\n", + " \"04.08.2024RESTAURANTE SAO JOAO TERESINA BR 108,00 0,00\",\n", + " \"04.08.2024GELATO E GRANO TERESINA BR 24,00 0,00\",\n", + " \"05.08.2024F L L MELO LTDA SAO PAULO BR 63,00 0,00\",\n", + " \"10.08.2024CREMERIA ITALIANA BRASILIA BR 49,00 0,00\",\n", + " \"14.07.2024RITUARIA*Rituaria SAO PAULO BR 448,20 0,00\",\n", + " \"24.07.2024BIOEXATA FARMACIA BRASILIA BR 73,70 0,00\",\n", + " \"12.07.2024CASCOL COMBUSTIVEIS BRASILIA BR 297,86 0,00\",\n", + " \"12.07.2024LIMBER SOFTWARE E CONS SAO LUIZ DO P BR 54,00 0,00\",\n", + " \"13.07.2024PAG*EduardoMeireles AGUAS LINDAS BR 22,00 0,00\",\n", + " \"13.07.2024PAG*EduardoMeireles AGUAS LINDAS BR 36,00 0,00\",\n", + " \"13.07.2024PAG*CidaRommanel BRASILIA BR 30,00 0,00\",\n", + " \"13.07.2024ALLPARK EMPREENDIMENTOSGoiania BR 6,00 0,00\",\n", + " \"14.07.2024MERCADOLIVRE*CHINALINK OSASCO BR 445,89 0,00\",\n", + " \"18.07.2024PG *S S MENDES COMERCI MOGI DAS CRUZ BR 150,12 0,00\",\n", + " \"19.07.2024MERCADOLIVRE*3PRODUTOS OSASCO BR 276,52 0,00\",\n", + " \"03.08.2024WOW*SALE COMERCIO E SE Brasilia BR 165,00 0,00\",\n", + " \"07.08.2024PARENTELA PANIFICADORA BRASILIA BR 64,90 0,00\",\n", + " \"08.08.2024FranciscoDeAssis BRASILIA BR 36,00 0,00\",\n", + " \"09.08.2024BONNAPAN SEU DIA MAIS BRASILIA BR 23,08 0,00\",\n", + " \"10.08.2024MP*BRILHODASARTE OSASCO BR 300,00 0,00\",\n", + " \"11.07.2024CARREFOUR PL2 338 BRASILIA BR 83,17 0,00\",\n", + " \"15.07.2024UBER * PENDING SAO PAULO BR 19,90 0,00\",\n", + " \"22.07.2024UBER * PENDING SAO PAULO BR 8,98 0,00\",\n", + " \"23.07.2024UBER* TRIP WWW.UBER.COM. BR 8,90 0,00\",\n", + " \"24.07.2024UBER* TRIP WWW.UBER.COM. BR 8,98 0,00\",\n", + " \"29.07.2024UBER * PENDING SAO PAULO BR 8,94 0,00\",\n", + " \"30.07.2024UBER* TRIP WWW.UBER.COM. BR 8,94 0,00\",\n", + " \"31.07.2024UBER* TRIP WWW.UBER.COM. BR 8,96 0,00\",\n", + " \"06.08.2024UBER* TRIP WWW.UBER.COM. BR 8,99 0,00\",\n", + " \"10.08.2024UBER* TRIP WWW.UBER.COM. BR 20,00 0,00\",\n", + " \"10.08.2024UBER* TRIP WWW.UBER.COM. BR 9,42 0,00\",\n", + " \"10.08.2024UBER * PENDING SAO PAULO BR 13,97 0,00\",\n", + " \"12.07.2024CIDA REIS MODA FITNESS BRASILIA BR 300,00 0,00\",\n", + " \"15.07.2024LANCHONETE SERRA RODO COCALZINHO DE BR 43,00 0,00\",\n", + " \"16.07.2024POUSADA PIRENEUS RESOR PIRENOPOLIS BR 1.704,00 0,00\",\n", + " \"19.07.2024POUSADA PIRENEUS RESOR PIRENOPOLIS BR 1.105,63 0,00\",\n", + " \"09.08.2024HOTEL GOYA P*hote RIO DE JANEIR BR 424,20 0,00\",\n", + " \"12.04.2024LISTO*CLINICA PARC 04/04 BRASILIA BR 2.000,00 0,00\",\n", + " \"17.01.2024BRASILIA EMPR PARC 07/12 BRASILIA BR 599,00 0,00\",\n", + " \"07.01.2024PG *B4A GLAMB PARC 08/12 SAO PAULO BR 74,90 0,00\",\n", + " ],\n", + " },\n", + "}\n", + "\n", + "\n", + "for key in bigDict:\n", + " for item in bigDict[key][\"tlist\"]:\n", + " print(item)" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "file OUROCARD_VISA_INFINITE-Ago_24.txt is full\n", + "file OUROCARD_VISA_INFINITE-Jul_24.txt is full\n", + "file OUROCARD_VISA_INFINITE-Próxima_Fatura.txt is partial\n", + "file OUROCARD_VISA_INFINITE-Próxima_Fatura(1).txt is partial\n" + ] + } + ], + "source": [ + "import re\n", + "\n", + "file_list = [\"OUROCARD_VISA_INFINITE-Ago_24.txt\", \"OUROCARD_VISA_INFINITE-Jul_24.txt\", \"OUROCARD_VISA_INFINITE-Próxima_Fatura.txt\", \"OUROCARD_VISA_INFINITE-Próxima_Fatura(1).txt\"]\n", + "partial_invoice_pattern = r\"L A N Ç A M E N T O S F U T U R O S\"\n", + "\n", + "partial = False\n", + "for file_name in file_list:\n", + " with open(file_name, \"r\", encoding=\"latin\") as file:\n", + " contents = file.readlines()\n", + " for line in contents:\n", + " if re.findall(partial_invoice_pattern, line):\n", + " partial = True\n", + "\n", + " if partial:\n", + " print(f\"file {file.name} is partial\")\n", + " else:\n", + " print(f\"file {file.name} is full\")\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 80, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "2024" + ] + }, + "execution_count": 80, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import datetime\n", + "datetime.datetime.now().year" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.12.5" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/pdfScrape.ipynb b/pdfScrape.ipynb deleted file mode 100644 index 5e9d089..0000000 --- a/pdfScrape.ipynb +++ /dev/null @@ -1,499 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "test_file = 'OUROCARD_VISA_INFINITE-Ago_24.txt'" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "with open('OUROCARD_VISA_INFINITE-Ago_24.txt', 'r') as reader:\n", - " data = reader.read()\n", - " print(data)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import re\n", - "\n", - "# Open the text file\n", - "with open('OUROCARD_VISA_INFINITE-Ago_24.txt', 'r') as file:\n", - " # Read the contents of the file\n", - " contents = file.read()\n", - "\n", - "# Define the regex pattern to match\n", - "pattern = r'\\d{2}\\.\\d{2}\\.\\d{4}.{23}.{14}.{2}\\s*\\d+,\\d{2}\\s*\\d+,\\d{2}'\n", - "\n", - "# Iterate over the lines that match the pattern\n", - "for matches in re.finditer(pattern, contents):\n", - " print(matches.group())" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import re\n", - "\n", - "# Open the text file\n", - "with open('OUROCARD_VISA_INFINITE-Ago_24.txt', 'r') as file:\n", - " # Read the contents of the file\n", - " contents = file.read()\n", - "\n", - "# Define the regex pattern to match\n", - "pattern = r'.*DANIEL.*|.*IZABELY.*'\n", - "\n", - "# Iterate over the lines that match the pattern\n", - "for matches in re.finditer(pattern, contents):\n", - " print(matches.group())" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import re\n", - "\n", - "# Open the text file\n", - "with open('OUROCARD_VISA_INFINITE-Ago_24.txt', 'r') as file:\n", - " # Read the contents of the file\n", - " contents = file.read()\n", - "\n", - "# Define the regex patterns\n", - "dan_pattern = r'*DANIEL.*'\n", - "iza_pattern = r'.*IZABELY.*'\n", - "line_pattern = r'\\d{2}\\.\\d{2}\\.\\d{4}.{23}.{14}.{2}\\s*\\d+,\\d{2}\\s*\\d+,\\d{2}'\n", - "\n", - "# Iterate over the lines that match the pattern\n", - "for matches in re.finditer(line_pattern, contents):\n", - " print(matches.group())\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Open the text file\n", - "with open('table-test.txt', 'r') as file:\n", - " # Read the contents of the file\n", - " contents = file.readlines()\n", - "\n", - "# Initialize lists to store the lines under each table\n", - "table_a_lines = []\n", - "table_b_lines = []\n", - "\n", - "# Flag to determine which table section we are in\n", - "current_table = None\n", - "\n", - "# Iterate over the lines in the file\n", - "for line in contents:\n", - " line = line.strip() # Remove leading and trailing whitespace\n", - "\n", - " # Check for TABLEA and TABLEB\n", - " if line == 'TABLEA':\n", - " current_table = 'TABLEA'\n", - " elif line == 'TABLEB':\n", - " current_table = 'TABLEB'\n", - " else:\n", - " # Add lines to the appropriate list based on the current table\n", - " if current_table == 'TABLEA':\n", - " table_a_lines.append(line)\n", - " elif current_table == 'TABLEB':\n", - " table_b_lines.append(line)\n", - "\n", - "# Print the results\n", - "print('Lines under TABLEA:')\n", - "for data in table_a_lines:\n", - " print(data)\n", - "\n", - "print('\\nLines under TABLEB:')\n", - "for data in table_b_lines:\n", - " print(data)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import re\n", - "from datetime import date, datetime\n", - "import locale\n", - "\n", - "locale.setlocale(locale.LC_ALL, 'pt_BR.UTF-8')\n", - "\n", - "# Open the text file\n", - "with open('OUROCARD_VISA_INFINITE-Ago_24.txt', 'r', encoding='latin') as file:\n", - " # Read the contents of the file\n", - " contents = file.readlines()\n", - "\n", - "# Define the regex patterns\n", - "dan_pattern = r'1 - DANIEL.*'\n", - "iza_pattern = r'4 - IZABELY.*'\n", - "line_pattern = r'\\d{2}\\.\\d{2}\\.\\d{4}.{23}.{14}.{2}\\s*\\d+,\\d{2}\\s*\\d+,\\d{2}'\n", - "line_group_pattern = r'(\\d{2})\\.(\\d{2})\\.(\\d{4})(.{23})(.{14})(.{2})(\\s*\\d+,\\d{2})(\\s*\\d+,\\d{2})'\n", - "\n", - "# Lists\n", - "list_dan = []\n", - "list_iza = []\n", - "current_list = None\n", - "\n", - "insert_bulk = []\n", - "\n", - "# Iterate all lines\n", - "for line in contents:\n", - " line = line.strip()\n", - " if re.match(dan_pattern, line):\n", - " current_list = 'list_dan'\n", - " print('found Dan')\n", - " elif re.match(iza_pattern, line):\n", - " current_list = 'list_iza'\n", - " print('found Iza')\n", - " else:\n", - " if re.match(line_pattern, line):\n", - " if current_list == 'list_dan':\n", - " print(\"dan\", line)\n", - " list_dan.append(line)\n", - " if current_list == 'list_iza':\n", - " print(\"iza\", line)\n", - " list_iza.append(line)\n", - "\n", - "print('list_dan - tuples for insert')\n", - "for item in list_dan:\n", - " matches = re.search(line_group_pattern, item)\n", - " tTdate = str(date(int(matches.group(3)), int(matches.group(2)), int(matches.group(1))))\n", - " tAccount = 1\n", - " tMemo = matches.group(4)\n", - " tCity = matches.group(5)\n", - " tCountry = matches.group(6)\n", - " tOutflow = matches.group(7).strip().replace(',', '.')\n", - " tInflow = matches.group(8).strip().replace(',', '.')\n", - " tOwner = 1\n", - " tInstallments = 1\n", - " tCreated = str(datetime.now(tz=None))\n", - " tUpdated = None\n", - " insert_bulk.append(( tTdate, tAccount, tMemo, tCity, tCountry, tOutflow, tInflow, tOwner, tInstallments, tCreated, tUpdated ))\n", - "\n", - "print('list_dan - tuples for insert')\n", - "for item in list_iza:\n", - " matches = re.search(line_group_pattern, item)\n", - " tTdate = str(date(int(matches.group(3)), int(matches.group(2)), int(matches.group(1))))\n", - " tAccount = 1\n", - " tMemo = matches.group(4)\n", - " tCity = matches.group(5)\n", - " tCountry = matches.group(6)\n", - " tOutflow = matches.group(7).strip().replace(',', '.')\n", - " tInflow = matches.group(8).strip().replace(',', '.')\n", - " tOwner = 2\n", - " tInstallments = 1\n", - " tCreated = str(datetime.now(tz=None))\n", - " tUpdated = None\n", - " insert_bulk.append(( tTdate, tAccount, tMemo, tCity, tCountry, tOutflow, tInflow, tOwner, tInstallments, tCreated, tUpdated ))\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "insert_query = \"INSERT INTO default.TRANSACTION (TDATE, ACCOUNTID, MEMO, CITY, COUNTRY, OUTFLOW, INFLOW, OWNERID, INSTALLMENT_NR, INSTALLMENT_TT, CREATED, UPDATED) VALUES ( %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s )\"" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "def create_lists():\n", - " import re\n", - "\n", - " # Open the text file\n", - " with open(\"OUROCARD_VISA_INFINITE-Ago_24.txt\", \"r\", encoding=\"latin\") as file:\n", - " # Read the contents of the file\n", - " contents = file.readlines()\n", - "\n", - " # Define the regex patterns\n", - " owner_pattern = r\"\\d\\s*-\\s*(\\w+)\"\n", - " line_pattern = r\"\\d{2}\\.\\d{2}\\.\\d{4}.{23}.{14}.{2}\\s*-?\\d*\\.?\\d+,\\d{2}\\s*\\d+,\\d{2}\"\n", - " payment_pattern = (r\"\\d{2}\\.\\d{2}\\.\\d{4}PGTO.*200211(\\s*-?\\d*\\.?\\d+,\\d{2})(\\s*\\d+,\\d{2})\")\n", - "\n", - " # Lists\n", - " current_list = None\n", - " owner_list = []\n", - " result = {}\n", - "\n", - " silly_counter = 1\n", - "\n", - " # Find Owners\n", - " for line in contents:\n", - " line = line.strip()\n", - "\n", - " found_owners = re.findall(owner_pattern, line)\n", - " if found_owners:\n", - " for owner_name in found_owners:\n", - " list_name = f\"list_{owner_name.lower()}\"\n", - " owner_list.append(list_name)\n", - " result[list_name] = {}\n", - " result[list_name][\"owner_name\"] = owner_name\n", - " result[list_name][\"owner_id\"] = silly_counter\n", - " silly_counter = silly_counter + 1\n", - "\n", - " for line in contents:\n", - " line = line.strip()\n", - "\n", - " if re.match(owner_pattern, line):\n", - " found_owner = re.match(owner_pattern, line)\n", - " owner_list = f\"list_{found_owner.group(1).lower()}\"\n", - " current_list = owner_list\n", - " result[current_list][\"tlist\"] = []\n", - " else:\n", - " if re.match(payment_pattern, line):\n", - " result[current_list][\"tlist\"].append(line)\n", - " elif re.match(line_pattern, line):\n", - " result[current_list][\"tlist\"].append(line)\n", - "\n", - " return result" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "print(create_lists())" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "def build_insert(input_dict: dict, account: int):\n", - " from datetime import date, datetime\n", - " import re\n", - "\n", - " insert_bulk = []\n", - " line_group_pattern = r\"(\\d{2})\\.(\\d{2})\\.(\\d{4})((.+PARC (\\d+.)\\/(\\d+))(\\s.{12})|(.{23})(.{14}))(.{2})(\\s*-?\\d*\\.?\\d+,\\d{2})(\\s*\\d*\\.?\\d+,\\d{2})\"\n", - " payment_pattern = r\"(\\d{2})\\.(\\d{2})\\.(\\d{4})(PGTO DEBITO CONTA).*200211(\\s*-?\\d*\\.?\\d+,\\d{2})(\\s*\\d+,\\d{2})\"\n", - "\n", - " for key in input_dict:\n", - " for item in input_dict[key][\"tlist\"]:\n", - " # * check for payment\n", - " matches = re.match(payment_pattern, item)\n", - " if matches:\n", - " tTdate = str(\n", - " date(\n", - " int(matches.group(3)),\n", - " int(matches.group(2)),\n", - " int(matches.group(1)),\n", - " )\n", - " )\n", - " tAccount = account\n", - " tMemo = matches.group(4)\n", - " tCity = None\n", - " tCountry = None\n", - " tOutflow = None\n", - " tInflow = matches.group(5).strip().replace(\".\", \"\").replace(\",\", \".\")\n", - " tOwner = input_dict[key][\"owner_id\"]\n", - " tInstallmentNr = None\n", - " tInstallmentTt = None\n", - " tCreated = str(datetime.now(tz=None))\n", - " tUpdated = None\n", - " else:\n", - " matches = re.match(line_group_pattern, item)\n", - " tTdate = str(\n", - " date(\n", - " int(matches.group(3)),\n", - " int(matches.group(2)),\n", - " int(matches.group(1)),\n", - " )\n", - " )\n", - " tAccount = account\n", - "\n", - " # * check for Installments\n", - " if matches.group(5):\n", - " tMemo = matches.group(5)\n", - " tCity = matches.group(8)\n", - " tInstallmentNr = int(matches.group(6))\n", - " tInstallmentTt = int(matches.group(7))\n", - " else:\n", - " tMemo = matches.group(9)\n", - " tCity = matches.group(10)\n", - " tInstallmentNr = 1\n", - " tInstallmentTt = None\n", - "\n", - " tCountry = matches.group(11)\n", - " tOutflow = matches.group(12).strip().replace(\".\", \"\").replace(\",\", \".\")\n", - " tInflow = matches.group(13).strip().replace(\".\", \"\").replace(\",\", \".\")\n", - " tOwner = input_dict[key][\"owner_id\"]\n", - "\n", - " tCreated = str(datetime.now(tz=None))\n", - " tUpdated = None\n", - " insert_bulk.append(\n", - " (\n", - " tTdate,\n", - " tAccount,\n", - " tMemo,\n", - " tCity,\n", - " tCountry,\n", - " tOutflow,\n", - " tInflow,\n", - " tOwner,\n", - " tInstallmentNr,\n", - " tInstallmentTt,\n", - " tCreated,\n", - " tUpdated,\n", - " )\n", - " )\n", - "\n", - " return insert_bulk" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "def db_insert(insert_bulk: list[tuple]):\n", - " from mysql.connector import connect, Error\n", - "\n", - " try:\n", - " with connect(\n", - " host=\"localhost\",\n", - " user=\"root\",\n", - " password=\"pleasehashapasswordomg\",\n", - " database=\"default\",\n", - " ) as connection:\n", - " print(\"CONNECTED!\", connection)\n", - " with connection.cursor() as cursor:\n", - " cursor.executemany(insert_query, insert_bulk)\n", - " connection.commit()\n", - " print(\"DONE!\")\n", - " except Error as e:\n", - " print(e)\n", - " finally:\n", - " connection.close()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "db_insert(build_insert(create_lists(), 1))" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "build_insert(create_lists(), 1)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "create_lists()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "dictTest = {\n", - " \"owner1\": {\n", - " \"owner_label\": \"foo\",\n", - " \"owner_id\": 1,\n", - " \"list1\": [\"thingies, thingies, 42\"],\n", - " },\n", - " \"owner2\": {\n", - " \"owner_label\": \"bar\",\n", - " \"owner_id\": 2,\n", - " \"list1\": [\"thingies, thingies, 42\"],\n", - " },\n", - "}\n", - "\n", - "for owner in dictTest:\n", - " print(dictTest[owner][\"owner_id\"], dictTest[owner][\"owner_label\"])\n", - " for item in dictTest[owner][\"list1\"]:\n", - " print(item)\n", - "\n", - "dictTest[\"owner1\"][\"owner_label\"] = \"yadda\"\n", - "\n", - "for owner in dictTest:\n", - " print(dictTest[owner][\"owner_id\"], dictTest[owner][\"owner_label\"])\n", - " for item in dictTest[owner][\"list1\"]:\n", - " print(item)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "param1 = \"foo\"\n", - "param2 = \"bar\"\n", - "testy = {}\n", - "testy[param1] = {}\n", - "testy[param1][param2] = [\"what\", \"when\", \"why\"]\n", - "testy[param1][\"number\"] = 1\n", - "\n", - "print(testy)" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.12.3" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/pdfquery.py b/pdfquery.py deleted file mode 100644 index 0bcd642..0000000 --- a/pdfquery.py +++ /dev/null @@ -1,11 +0,0 @@ -import pandas -import pdfquery - -#read the PDF -pdf = pdfquery.PDFQuery('cc.pdf') -pdf.load() - - -#convert the pdf to XML -pdf.tree.write('cc.xml', pretty_print = True) -pdf \ No newline at end of file diff --git a/robopato.sql b/robopato.sql index 5458db5..1c860be 100644 --- a/robopato.sql +++ b/robopato.sql @@ -1,44 +1,43 @@ CREATE TABLE `ACCOUNTS` ( `ID` integer PRIMARY KEY NOT NULL AUTO_INCREMENT, `NAME` varchar(20), - `CREATED` datetime, + `CREATED` datetime NOT NULL, `UPDATED` datetime ); CREATE TABLE `TRANSACTION` ( `ID` integer PRIMARY KEY NOT NULL AUTO_INCREMENT, - `TDATE` date, - `ACCOUNTID` integer, - `MEMO` varchar(30), - `CITY` varchar(20), + `TDATE` date NOT NULL, + `ACCOUNTID` integer NOT NULL, + `MEMO` varchar(50) NOT NULL, `COUNTRY` char(2), `OUTFLOW` decimal(20,2), `INFLOW` decimal(12,2), `OWNERID` integer, `INSTALLMENT_NR` integer, `INSTALLMENT_TT` integer, - `CREATED` datetime, + `CREATED` datetime NOT NULL, `UPDATED` datetime ); CREATE TABLE `PAYEE` ( `ID` integer PRIMARY KEY NOT NULL AUTO_INCREMENT, `NAME` varchar(20), - `CREATED` datetime, + `CREATED` datetime NOT NULL, `UPDATED` datetime ); CREATE TABLE `OWNER` ( `ID` integer PRIMARY KEY NOT NULL AUTO_INCREMENT, `NAME` varchar(20), - `CREATED` datetime, + `CREATED` datetime NOT NULL, `UPDATED` datetime ); CREATE TABLE `CATEGORY` ( `ID` integer PRIMARY KEY NOT NULL AUTO_INCREMENT, `NAME` varchar(20), - `CREATED` datetime, + `CREATED` datetime NOT NULL, `UPDATED` datetime ); @@ -46,7 +45,7 @@ CREATE TABLE `SUBCATEGORY` ( `ID` integer PRIMARY KEY NOT NULL AUTO_INCREMENT, `CATEGORYID` integer, `NAME` varchar(20), - `CREATED` datetime, + `CREATED` datetime NOT NULL, `UPDATED` datetime ); @@ -57,7 +56,7 @@ CREATE TABLE `CATEGORIZED_TRANSACTIONS` ( `PAYEEID` integer, `CATEGORYID` integer, `SUBCATEGORYID` integer, - `CREATED` datetime, + `CREATED` datetime NOT NULL, `UPDATED` datetime );