Vánoční nadílka Vánoční nadílka
Vánoční akce! Daruj lepší budoucnost blízkým nebo sobě. Až +50 % zdarma na dárkové poukazy. Více informací

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

Python Python Extrahování hodnoty z textu a dosazení hodnoty American English version English version

Aktivity (1)
Avatar
Deny
Člen
Avatar
Deny:28. srpna 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. srpna 21:46
Avatar
Martin Petrovaj
Překladatel
Avatar
Odpovídá na Deny
Martin Petrovaj:28. srpna 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. srpna 22:13
Nahoru Odpovědět  +1 28. srpna 22:11
if (this.motto == "") { throw new NotImplementedException(); }
Avatar
Deny
Člen
Avatar
Deny:29. srpna 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. srpna 6:21
Avatar
Odpovídá na Deny
Michal Haňáček:29. srpna 9:30

Nikdy se nedostaneš přes 9 minut?

Nahoru Odpovědět 29. srpna 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. srpna 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  +2 29. srpna 14:09
Avatar
Deny
Člen
Avatar
Deny:31. srpna 14:02

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

 
Nahoru Odpovědět 31. srpna 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.