Wpis z mikrobloga

Mireczki #programowanie #programista15k #python

Może mi ktoś pomoże lub zaproponuje strukturę zbudowania danych.

Dla każdej instytucji np Orange i Tauron muszę wygenerować słownik który będzie zawierał key jako podmieniana wartość oraz value jako czym to będzie zastąpione.

Załóżmy że dla takiego Orange jest to 10 par kluczy:wartości gdzie 3 z nich są bezpośrednio odczytywane z pliku Excel (no nic mądrzejszego i łatwiejszego nie wymyśliłem zwłaszcza że program jest w wersji cli) reszta jest budowana za pomocą różnych splitow itp czyli mamy klucz title z wartością odczytana z excela a np numer działki odczytywany właśnie z tytułu.

Do tego jeszcze muszę dodać jakaś weryfikację że jak wybrałeś Orange to musisz wypełnić te i te komórki.

Z tego powstał mi słownik z pierwszym kluczem Orange i ze słownikiem neededcells: [a1, b2]

I analogixznie Tauron needed
cells: [a1, c1]

Potem to jest mielone różnymi funkcjami i powstaje już konkretny słownik do użycia docxreplace

Na zasadzie zmienna= split(title)

Potem mam key : zmienna

Ni podoba mi się struktura takiego pliku, nie bardzo widzę możliwośc sensownego zastosowania klasy, może mnei naprowadsicie na coś?

Sorry że to pseudokod ale długo mnie nie będzie w domu i nie mam jak wkleić konkretnego wycinka
  • 15
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@ozzi91: Kolego, strasznie niejasno to napisałeś. Ale ok. Nie napisałeś jaki jest problem, a ten może mieć lepsze rozwiązania niż to co próbujesz zrobić; trzymając się jednak tego co udało mi się zrozumieć, robisz normalnie słownik / mapę:

firma_1 = {
"_required": ["a1", "b2"],
"name": "Firma 1 inc"
  • Odpowiedz
  • 0
@Oo-oO: napiszę od początku bo w sumie pewnie dałem za mało informacji. Chętnię przyjmę krytykę, wiem ze nie miesza sie polskiego z angielskim ale nie jest to teraz az tak istotne

class BaseTemplate:

today_date = datetime.today().strftime("%Y-%m-%d")
# task_folder
  • Odpowiedz
@ozzi91: Nie chodzi tu o (konstruktywną) krytykę, po prostu jeśli coś jest napisane "jednym ciurkiem" to trudno to rozwijać.
Ok, dochodzimy do czegoś; masz sobie dwie klasy które rozumiem robią też z grubsza to co chcesz - jest sobie jakiś szablon docx i trzeba go konkretnie takimi danymi uzupełnić jakie oczekuje.
Na mój gust - w tym przypadku, nie warto robić tu jednej wspólnej klasy do parsowania tych plików Excela. Znając
  • Odpowiedz
  • 0
@Oo-oO: na samym początku bardzo dziękuję Ci za zaanagażowanie :)

samo wyciągniecie danych ok, rozumiem i rzeczywiście trzymanie tego w osobnych plikach *.py nie wygląda na aż tak zły pomysł, tymbardziej, że program jest pisany dla 3 osób pisany przez wanna be juniora za darmoszkę.

zakładając, że wszystkie możliwe dane mamy zaciągnięte w sposób opisany przez Ciebie, jest coś złego w tym, żeby po prostu linijka po linijce, już w zasadzie bez
  • Odpowiedz
@ozzi91: Nie ma za co, mało jest osób na mirko które jeśli się uczą to przy tym myślą ;)

Nie ma w tym nic złego. Ogólnie, to już kwestia podejścia - jeśli chciałbyś z tego robić porządny projekt to tak, było by sporo do poprawy, ale jeśli coś działa i ułatwia pracę - to po co? Nie zawsze też warto robić wszystko idealnie, czasem warto wybierać sobie zasady, typu KISS
  • Odpowiedz
via Android
  • 0
@Oo-oO w zasadzie to Ci opiszę o co chodzi. Jako projektanci musimy wymyślić sami temat zadania na zasadzie budowa sieci w miejscowości Kraków ul. Sławkowska na dz. nr 222, 233, 245. Za pomocą regex udaje mi się wyciągnąć to co jest po ul. jako zmienna street. Potem mamy to co po Dz. Nr zapisane w zmiennej "działki".

A co do pliku xlsx skąd mają być pobierane dane. Ode mnie dokładnie zależy
  • Odpowiedz
@ozzi91: ok, to trochę zmienia postać rzeczy. Zakładałem że ktoś narzuca Ci format, zawsze dostajesz dane w excelu i przetwarzasz go by wypełnić formatkę docx. Skoro sam decydujesz o tym wyglądzie excela to po co w ogóle go używać? Ogólnie, powiem Ci że jeśli chciałbyś się nauczyć jak to zrobić dobrze, to musiałbyś się nieco cofnąć i zastanowić, co jest na wejściu co na wyjściu i czy potrzebujesz w ogóle
  • Odpowiedz
via Android
  • 0
@Oo-oO hmm jeszcze inaczej. Ja stworzyłem excela z którego będa pobierane dane. Ale dla każdego zadania trzeba excela uzupełnić innymi danymi i to nie zawsze ja będę robił, tylko inni współpracownicy również. I po prostu doszedłem do wniosku, że wypełnianie xlsx jest proste i ciężko to spartolic, a na bank łatwiejsze i lepiej wyglądające niż plik w notatniku. Plus jeszcze musiało by to wyglądać tak: jest plik yaml, pobieram dane, obrabiam,
  • Odpowiedz
@ozzi91: jeśli macie jakiś współdzielony dysk i wspólnie edytujecie tego excela to jakieś korzyści są. Daj znać jak to się tam potoczy, jak coś napiszesz
  • Odpowiedz
  • 0
@Oo-oO: wołam :>
docelowo wczytywany plik excela zrobiłbym tak, że tworzę kopię tego pliku w folderze zadania wybieranym przez usera (stąd takie rozwiązanie gdyż własnie te wszystkie dokumenty są generowane dla konkretnego wybranego folderu który jednocześnie jest zadaniem) i każe go mu wypełnić, a potem:

`from datetime import datetime, timedelta
import re
  • Odpowiedz
@ozzi91: Spoko. Drobne uwagi: stałe globalne (tzn takie które nie są w funkcji - WIELKIMI_LITERAMI).
Regex powinien też łapać myślnik (Bielsko-Biała) czy coś takiego. Dla każdego re.search-a warto sprawdzać czy coś się znalazło czy nie. Zamiast wywoływać get_attr_from_title(title)[1] kilkukrotnie, już lepiej wywołać raz, tytuł się nie zmienia.

...
changes = get_attr_from_title(title)
sheet["A2"]
  • Odpowiedz
  • 0
@Oo-oO: yep, co do tego getattrfrom_title(title) masz 100% racji, ogarnąłem to wklejając kod że coś jest nie halo ale nie znalazłem w głowie rozwiązania które zaproponowałeś :)

Bielsko-Biała - pewnie masz rację, póki co w moim rejonie działań się miejscowości z myślnikiem nie zdarzają, ale warte pokrycia na pewno.

Dla każdego re.search-a warto sprawdzać czy coś się znalazło czy nie


W jaki sposób? Co masz na myśli? Mam
  • Odpowiedz