IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: Extrahování hodnoty z textu a dosazení hodnoty

V předchozím kvízu, Online test znalostí Python 2.7, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar
Deny
Člen
Avatar
Deny:28.8.2018 21:46

Zdravím,

Měl bych dotaz,
Když ze stránek například dostanu hodnotu.
,,Musíte počkat 1:35 minut. "

Jak můžu ,,extrahovat" z textu pouze ,,1:35" a tu dosadit ve formě sekund do určité funkce (například sleep)?

tzn 1:35 = 60+35 (95)
a to vložit do
time.sleep(65) ve formátu přímo na sekundy

Děkuji :) Hezký zbytek dne.

Zkusil jsem: Zkoušel jsem hledat různé návody na internetu, ale bez úspěchu.

Chci docílit: Zdokonalit se ve formátování textu a hlavně si absolutně nevím rady.

 
Odpovědět
28.8.2018 21:46
Avatar
Martin Petrovaj
Tvůrce
Avatar
Odpovídá na Deny
Martin Petrovaj:28.8.2018 22:11

Ahoj, jedná sa o zostavenie jednoduchého algoritmu, teda základnú zručnosť, ktorá by žiadnemu programátorovi nemala chýbať. Ako začiatočník sa, samozrejme, budeš na podobných úlohách občas zasekávať, ale práve ich samostatným riešením sa zdokonaľuješ. Ak prídeš na riešenie sám (aj keby ti to trvalo dlhšie), dá ti to oveľa viac, než riešenie len opísať odniekiaľ z internetu, alebo si ho vypýtať na nejakom fóre.

Tak, a keď máme výchovný diss za sebou, ideme ten problém vyriešiť (samozrejme, ak si chceš ešte skúšať lámať hlavu sám, nikto ťa nenúti ďalej čítať…) :-)

  • Vieš, aký formát má tvoj vstupný text, tak s tým pracuj. "Musíte počkat {hodnota, ktorá ťa zaujíma} minut."
  • Pokiaľ vstupný text tvojho programu / algoritmu vždy začína rovnako (napr. "Musíte počkat "), tak vieš, že tých X znakov zo začiatku môžeš vždy veselo odignorovať. Tým pádom sa zaujímaš už len o nejaký substring (podreťazec) od určitej pozície ďalej.
  • Sme pri hľadanej hodnote, ktorú chceme naparsovať, tak si ju najprv rozoberme. Prvá vec, ktorú vieme povedať je, že sa jedná o dve číselné hodnoty oddelené dvojbodkou. Tak v programe obidve čísla zo zvyšku reťazca vyberieme (napr. prečítam substring z 2. kroku až po znak, ktorý nie je numerický alebo po medzeru), rozdelíme ich podľa tej dvojbodky a naparsujeme každú hodnotu osobitne.
  • Nezabudni ešte predtým vstup v prípade potreby očistiť od whitespaceov na okrajoch (to sú hlavne medzery, tabulátory, entery atď). Nezaškodila by ani nejaká predbežná validácia, aby program pri parsovaní textu na čísla nespadol na chybe,
  • Voilá, po naparsovaní máš svoje hľadané číselné hodnoty, ďalej s nimi pracuj tak, ako uznáš za vhodné.

Konkrétne metódy a techniky, ktoré potrebuješ na implementáciu jednotlivých krokov si určite zvládneš dohľadať sám, napr. v tunajšom Python tutoriáli.

Editováno 28.8.2018 22:13
Nahoru Odpovědět
28.8.2018 22:11
if (this.motto == "") { throw new NotImplementedException(); }
Avatar
Deny
Člen
Avatar
Deny:29.8.2018 6:21

Děkuji už jsem na to přišel :)

Případně kdyby někoho zaujímalo řešení:

import time
word = "Další zprávu můžete odeslat za 1:35 min"
print("-----")
#Rozdělení do čistého formátu (Pouze 1:22)
slovo = word[-8:-4]
print(slovo)
#Rozdělení na minuty a sekundy
Splinter,Plinter = slovo.split(':')
#Převod na int
minc = int(Splinter)
secc = int(Plinter)
#Převod minut na sekundy
min = minc * 60
#Jedna sekunda navíc, projistotu.
sec = secc + 1
counted = min + sec
for i in reversed(range(0, counted)):
time.sleep(1)
print("%s\r" %i,)

print("Dokončeno")

Akceptované řešení
+5 Zkušeností
Řešení problému
 
Nahoru Odpovědět
29.8.2018 6:21
Avatar
Odpovídá na Deny
Michal Haňáček:29.8.2018 9:30

Nikdy se nedostaneš přes 9 minut?

Nahoru Odpovědět
29.8.2018 9:30
Každé rozhodnutí a každý krok v životě nás někam posune. Bohužel jen některé nás posouvají dopředu.
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:29.8.2018 14:09

M. Hanacek to myslel tak, ze
"...1:35 min" slovo = word[-8:-4] // 1:35
"...11:35 min" slovo = word[-8:-4] // 1:35 spatne, melo byt 11:35
Mozna by bylo lepsi to splitovat od zacatku na mezery. Nebo pouzit reg. vyraz na vyhledavani.

 
Nahoru Odpovědět
29.8.2018 14:09
Avatar
Deny
Člen
Avatar
Deny:31.8.2018 14:02

Maximálně tam bude 5 minut :) Takže nepotřebuju to přes 9 minut :)

 
Nahoru Odpovědět
31.8.2018 14:02
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 6 zpráv z 6.