Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
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í.
Avatar
Patrik Živčák:25.2.2019 20:11

subor = open("textfile­.txt","r") #otvorenie suboru
retazec = subor.read() #nacitanie obsahu do retazca
rozdelenie = retazec.split()
for i in range(len(roz­delenie)):
if rozdelenie[i]­.includes("#1"): # nejde ale bez if podmienky to ide ale vypiše mi všetko
print(rozdele­nie[i])
i += 1

Zkusil jsem: 1. Otvoriť a načitať subor
2. Použitie cyklu na prechadzanie retazcom
3. Nechapem ako mam spraviť podmienky akoby nechce ich zžrať python
4. Zatial skušam len oddeliť slova ktore začinaju tagom #1 a samozrejme ani to mi nejde

Chci docílit: Ahojte mám taky problem prakticky ako vždy neviem nájsť riešenie jedneho problemu. Mam textovy subor napr. subor.txt. V ňom je string je jedno aky dlhy čo ja viem dam tu niečo s wikipedie: #1V periodickej tabuľke sa umiestňujú v osobitnej sekcii.Rovnako ako lantanoidy nachádzajúce sa o periódu vyššie. $2Prvý prvok aktinoidového radu je tórium a aktínium spoločne so skandiom, ytriom a lantánom je zaradené medzi prechodné prvky do tretej skupiny.

Nachval som to otagoval jedna veta ma #1 a tretia $2 na začiatku a teraz chcem aby sa vytvorili 2 textove subory kdev prvom bude všetko čo ma pred sebou #1 a v druhom všetko čo ma pred sebou $2.
Teda teoreticky by to bolo subor 1: V periodickej tabuľke sa umiestňujú v osobitnej sekcii.Rovnako ako lantanoidy nachádzajúce sa o periódu vyššie.
V subore 2 by bolo: Prvý prvok aktinoidového radu je tórium a aktínium spoločne so skandiom, ytriom a lantánom je zaradené medzi prechodné prvky do tretej skupiny.

Ide aj o to, že tie tagy nemusia isť a sebou ako v tom priklade čo som dal a su nahodne v tom texte treba prechadzať cely string a porozdelovať vety.

 
Odpovědět
25.2.2019 20:11
Avatar
MQ .
Tvůrce
Avatar
MQ .:26.2.2019 21:39

Ahoj, napsal jsem ti řešení a kroky okomentoval. Snad to funguje. tak jak jsi chtěl :)

f = open("soubor.txt", "r")
data = f.read()
f.close()

tagy = ["#", "$"]
# Nahradíme # a $ jedním symbole pro rozdělení stringu, to bude ;
for tag in tagy:
    data = data.replace(tag, ";")

rozdeleno = data.split(";")

# Pokud text začíná tagem, první prázdný item v listu odstraníme
rozdeleno = rozdeleno[1:] if rozdeleno[0] == "" else rozdeleno

# Sekce zapíšeme do souborů
for i, text in enumerate(rozdeleno):
    f = open( "sekce_{}.txt".format(i), "w" )
    f.write(text)
    f.close()

Soubor.txt

#1Toto je prvni cast.
$2Toto je druha cast.

sekce_0.txt

1Toto je prvni cast.

sekce_1.txt

2Toto je druha cast.
 
Nahoru Odpovědět
26.2.2019 21:39
Avatar
Patrik Živčák:26.2.2019 22:49

Môžem sa opýtať čo robí toto: rozdeleno = data.split(";") a konkrene táto časť: (";") **
Potom ešte toto : [1:]
A toto: **format(i)
#tu viem, že asi nejake formaotvanie textu tej i-tej časti pola? ak sa da ysvetli to konretnejšie
Inak ďakujem.

Editováno 26.2.2019 22:52
 
Nahoru Odpovědět
26.2.2019 22:49
Avatar
MQ .
Tvůrce
Avatar
Odpovídá na Patrik Živčák
MQ .:27.2.2019 13:36
  • data.split(";") rozdělí text tam, kde je znak ";" - "Jedna;Dva" -> ["Jedna", "Dva"]
  • list[1:] získá všechny prvky od prvního v listu -> [1, 2, 3][1:] -> [2, 3]
  • .format(i) naformátuje string -> "Zpráva: {}".format("naz­dar") -> "Zpráva: nazdar"
 
Nahoru Odpovědět
27.2.2019 13:36
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:28.2.2019 13:34

google = format py
https://pyformat.info/

 
Nahoru Odpovědět
28.2.2019 13:34
Avatar
Peter Mlich
Člen
Avatar
Odpovídá na Peter Mlich
Peter Mlich:28.2.2019 13:39
url  = "htt..."
text = "odkaz na stranku"
str  = '<a href="{}">{}</a>'.format(url, text)

Ale da se pouzit mnohem slozitejsi zpusob formatovani, prevod na cislo ze stringu a pod.

Editováno 28.2.2019 13:40
 
Nahoru Odpovědět
28.2.2019 13:39
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.