Created
March 14, 2021 23:13
-
-
Save rgiaviti/0d34cde87bc6589b3272d190619d7368 to your computer and use it in GitHub Desktop.
Formatador de Extrato da Modal Mais
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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