Skip to content

Instantly share code, notes, and snippets.

@rgiaviti
Created March 14, 2021 23:13
Show Gist options
  • Save rgiaviti/0d34cde87bc6589b3272d190619d7368 to your computer and use it in GitHub Desktop.
Save rgiaviti/0d34cde87bc6589b3272d190619d7368 to your computer and use it in GitHub Desktop.
Formatador de Extrato da Modal Mais
from classes import ExcerptInfo
from datetime import datetime
import csv
EXCERPT_RAW_MODAL = ""
FORMATTED_EXCERPT_CSV = ""
class ExcerptInfo:
def __init__(self, date):
self.date = date
self.description = None
self.value = None
def csv_format(self):
return self.date + ';' + self.description + ';' + self.value
def __str__(self):
return self.date + ';' + self.description + ';' + self.value
def write_csv(excerpt):
with open(FORMATTED_EXCERPT_CSV, mode='w') as csv_excerpt_file:
excerpt_writer = csv.writer(csv_excerpt_file, delimiter=';', quotechar='"', quoting=csv.QUOTE_MINIMAL)
for info in excerpt:
excerpt_writer.writerow([info.date, info.description, info.value])
def read_file_and_extract_lines():
unformatted_lines = []
raw_file = open(EXCERPT_RAW_MODAL, "r")
for line in raw_file:
unformatted_lines.append(line.rstrip("\n"))
raw_file.close()
return unformatted_lines
def is_date(line):
try:
datetime.strptime(line.strip(), "%d/%m/%Y")
return True
except ValueError:
return False
def is_value(line):
return "R$" not in line.strip()
def build_csv_lines():
raw_excerpt_lines = read_file_and_extract_lines()
excerpt_info_array = []
excerpt_info = None
for raw_line in raw_excerpt_lines:
if is_date(raw_line):
excerpt_info = ExcerptInfo(date=raw_line.strip())
elif is_value(raw_line):
excerpt_info.value = raw_line.strip()
excerpt_info_array.append(excerpt_info)
else:
excerpt_info.description = raw_line.strip()
return excerpt_info_array
write_csv(build_csv_lines())
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment