Formula z Excela w kodzie python

0

Cześć,

Potrzebuje zbudować prosty program bazujący na Pythonie, w którym po wpisaniu w pole pewnej wartości liczbowej w postaci ciągu znaków: CS12 CS13 CS14 CS 15 CS0 CS1 CS2 CS 3 CS4 CS5 CS6 CS7 CS8 CS9 CS10 CS11 i po naciśnięciu przycisku typu "generate" program przeorganizuje te wartość do postaci CS3 CS2 CS1 CS0 CS5 CS4

Tak naprawdę mam już działającą formule w Excelu: =CONCAT(MID(SUBSTITUTE(A2;" “;”");{15\16\13\14\11\12\9\10\19\20\17\18};1))

Niemniej jednak zastanawiam się czy można ją w jakiś sposób przenieść do kody w pythonie?

0
adisc napisał(a):

Cześć,

Niemniej jednak zastanawiam się czy można ją w jakiś sposób przenieść do kody w pythonie?

Na 99% sądzę że można.
Natomiast niewielu tutaj rozumie formułe excellową (ja, wyżej podaną - wcale), bardziej użyteczny (tak jak dla mnie) byłby opis "swoimi słowami"

Po pierwsze struktura danych (tablica / lista / coś innego), na niej algorytm - excll na nieszczęście rozmywa podział dane / prezentacja / kod ( ~= MVC)

0

@ZrobieDobrze: dzięki za odpowiedź. A więc w swoim słowach, chciałbym, aby po wklejeniu do programu ciągu znaków w postaci CS12 CS13 CS14 CS15 CS0 CS1 CS2 CS3 CS4 CS5 CS6 CS7 CS8 CS9 CS10 CS11, czyli przykładowo: 98 72 67 9f 8j 7u 0p 84 1z 4h p9 ee 7z 1e 5b 6u i po klinieciu generate wartość zmieniła się na CS3 CS2 CS1 CS0 CS5 CS4, czyli w wyżej wymienionym przypadku byłoby to dokładnie: 84 0p 7u 8j 4h 1z (idealnie by było, aby ta finalna wartość była bez spacji pomiędzy "dwuznakami")Czyli formula ta ucina cześć znaków i zmienia kolejność co poniektórych.

0

Chyba zrozumiałem (wciąż nie jestem pewien, czy dobrze). Jeśli tak, to jak najbardziej. Podzielmy to na podproblemy:

  1. str.split dzieli na spacjach (lub dowolnym innym stringu): https://docs.python.org/3/library/stdtypes.html#str.split
  2. str.join łączy kolekcję stringów w string: https://docs.python.org/3/library/stdtypes.html?#str.join Można też użyć f-stringa do tego zamiast.

Innym rozwiązaniem jest użycie wyrażeń regularnych z re i nazwanych grup.

Napisanie ograniczonego parsera takich formuł też nie powinno być specjalnie pracochłonne.

0

@Althorion: kurcze, chyba jestem zbyt nowy w temacie, żeby zczaic to na podstawie tej informacji. Mógłbyś mi to lepiej przybliżyć, od czego zacząć, itd? Z góry dziękuję.

0

Zacząć od nauki Pythona, jeśli to sam Python jest problemem — co to są stringi, co to są listy, itd. A potem te linki z posta wyżej.

Jeśli dobrze zrozumiałem problem — a mogłem źle zrozumieć — to chcesz pociąć ciąg tekstu (stringa) na mniejsze (do czego służy str.split), po czym wybrane z tych kawałków połączyć w stringa wynikowego (do czego służy str.join).

Tak dla przykładu:

INPUT_TEXT = "pierwszy drugi trzeci czwarty piąty szósty siódmy ósmy dziewiąty dziesiąty"
cut_text = INPUT_TEXT.split()
OUTPUT_TEXT = "".join((cut_text[3], cut_text[2], cut_text[1]))

assert "czwartytrzecidrugi" == OUTPUT_TEXT

1 użytkowników online, w tym zalogowanych: 0, gości: 1