Extrahovani zvolenych udaju z .txt souboru – Python – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Extrahovani zvolenych udaju z .txt souboru – Python – Fórum – Programujte.comExtrahovani zvolenych udaju z .txt souboru – Python – Fórum – Programujte.com

 

JohnyD
~ Anonymní uživatel
4 příspěvky
20. 8. 2007   #1
-
0
-

Zdravim, pujdu hned na vec, mam .txt soubor s obsahem napr:
-------------------------------------------------------------------------
---bladsasda text: ahoj obsah: cau.cau pripona: txt blasdadsbla ---
---blaasdasdla bla text: ahoj1 obsah: cau.cau1 pripona: txt blaasdasdbla ---
---blasdasd bla bla text: ahoj2 obsah: cau.cau2 pripona: txt bla asdasda ---
-------------------------------------------------------------------------

a chtel bych vytvorit do druheho souboru toto:
ahoj,cau.cau,txt
ahoj1,cau.cau1,txt
ahoj2,cau.cau2,txt

proste aby se vzala jen hodnota za "text: ", "obsah: " a "pripona: "

diky moc...

Nahlásit jako SPAM
IP: ...–
Blujacker
~ Moderátor
0
Grafoman
20. 8. 2007   #2
-
0
-
Nahlásit jako SPAM
IP: ...–
Navštivte server Matematika pro každého
Najdete zde články zabývající se matematikou základních a středních škol a databázi hlavolamů.
Pro vyzkoušení Vaš
DeaLer+2
Hero
20. 8. 2007   #3
-
0
-

Mě by jen zajímalo, k čemu to bude dobrý ... pokud je to jen nějaká maličkost, tak budou reguláry stačit, ale pokud bude množství dat hodně velký, tak by bylo vhodný napsat parser (pravděpodobně máš pevně danou strukturu souboru), protože by jinak mohlo docházet ke ztrátě výkonu.

Nahlásit jako SPAM
IP: ...–
Dušan Janošík | web: djanosik.cz, @djanosik
geon0
Grafoman
21. 8. 2007   #4
-
0
-

# -*- coding: cp1250 -*- 


# jasné
import re

# dá se jistě načíst i ze souboru
text="""---bladsasda text: ahoj obsah: cau.cau pripona: txt blasdadsbla ---
---blaasdasdla bla text: ahoj1 obsah: cau.cau1 pripona: txt blaasdasdbla ---
---blasdasd bla bla text: ahoj2 obsah: cau.cau2 pripona: txt bla asdasda ---"""

# "text:" - hledá slovo "text" následované dvojtečkou
# "*" - předchozí znak se může libovolněkrát opakovat
# " *" - mezera se může libovolněkrát oprakovat
# \w - jedno písmeno, jakékoliv
# \w+ - písmeno se může libovolněkrát opakovat, nejméně však jednou - jinými slovy je to "slovo"
# (\w+) - bude zahrnuto do výsledku hledání jako např. skupina 1 = vyskyt.group(1)
# "obsah: *" - dále musí následovat slovo "obsah", pak dvojtečka a následovaný libovolným počtem mezer
# (\w+\.\w+) - dve slovo oddělená tečkou, ve výsledích to bude skupina 2
# atd. atd.
vzor="text: *(\w+) *obsah: *(\w+\.\w+) *pripona: *(\w+)"

# finditer postupně nalézá všechny výskyty v textu - v tomto případě po řádcích
for vyskyt in re.finditer(vzor, text):

# vytiskne skupinu 1 (to co je ve vzoru v první závorce), skupinu 2 i 3
print vyskyt.group(1)+","+ vyskyt.group(2)+","+ vyskyt.group(3)


# zápis do souboru snad zvládneš



Comments: obdivuju machry z abclinux.cz, kterí regulární výrazy, daleko složitější, smaží z hlavy. Mě to vždy trochu času zabere, už jsem to zase nějaký ten měsíc nedělal.

Komentáře do textu přidávám pro ty, kdo by snad chtěli víc než jen copy & paste. At slouží.

P.S. tady je to hezky barevně: http://www.pastebin.cz/show/1840

EDIT: opraveny poznámky, jen zde, na pastebin.cz původní verze.

Nahlásit jako SPAM
IP: ...–
geon. volume doprava.
geon0
Grafoman
26. 8. 2007   #5
-
0
-

To JohnyD: pomohlo?

Nahlásit jako SPAM
IP: ...–
geon. volume doprava.
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 31 hostů

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý