Geek tričko zdarma Geek tričko zdarma
Tričko zdarma! Stačí před dobitím bodů použít kód TRIKO15. Více informací zde

Diskuze: Načitanie zo suboru + praca zo stringom

Aktivity (2)
Avatar
Patrik Živčák:25. února 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. února 20:11
Avatar
MQ .
Překladatel
Avatar
MQ .:26. února 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. února 21:39
Programovácí jazyk zítřka bude vysokoúrovňový, bez ";", prostý a v neposlední řadě čitelný.
Avatar
Patrik Živčák:26. února 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. února 22:52
 
Nahoru Odpovědět 26. února 22:49
Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!
Avatar
MQ .
Překladatel
Avatar
Odpovídá na Patrik Živčák
MQ .:27. února 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. února 13:36
Programovácí jazyk zítřka bude vysokoúrovňový, bez ";", prostý a v neposlední řadě čitelný.
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:28. února 13:34

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

 
Nahoru Odpovědět 28. února 13:34
Avatar
Peter Mlich
Člen
Avatar
Odpovídá na Peter Mlich
Peter Mlich:28. února 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. února 13:40
 
Nahoru Odpovědět 28. února 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.