Portál AbcLinuxu, 23. dubna 2024 18:45


Dotaz: Python - označení všech výskytů řetězce

18.9.2017 20:25 michal
Python - označení všech výskytů řetězce
Přečteno: 280×
Odpovědět | Admin
Potřebuju v textu označit všechny výskyty řetězce v proměnné search_str .

Následující kód v Pythonu - Gtk bohužel označí jen první výskyt:

start_iter = textbuffer.get_start_iter()  
found = start_iter.forward_search(search_str,0, None)

if found:
match_start,match_end = found
textbuffer.select_range(match_start,match_end)


Jak upravit kód, aby se označily všechny výskyty řetězce v textu ? Ptám se, protože nejsem Pytoňák, a toto chce odborníka.
Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

18.9.2017 20:30 NN
Rozbalit Rozbalit vše Re: Python - označení všech výskytů řetězce
Odpovědět | | Sbalit | Link | Blokovat | Admin
Nestacilo by re.findall() ?
18.9.2017 20:46 michal
Rozbalit Rozbalit vše Re: Python - označení všech výskytů řetězce
Nejsem si jistý, jak tohleto použít k označení všech výskytů hledaného řetězce v textu uloženém v textbufferu.
18.9.2017 20:32 michal
Rozbalit Rozbalit vše Re: Python - označení všech výskytů řetězce
Odpovědět | | Sbalit | Link | Blokovat | Admin
Ještě doplním, že přesnější znění první věty zní: Potřebuju v textu označit všechny výskyty hledaného řetězce, uloženého v proměnné search_str .
wamba avatar 18.9.2017 21:26 wamba | skóre: 38 | blog: wamba
Rozbalit Rozbalit vše Re: Python - označení všech výskytů řetězce
Odpovědět | | Sbalit | Link | Blokovat | Admin
Tipoval bych, že ta nula znamená odkud se má hledat. Tak ty výskyty bych hledal a označoval ve smyčce, kde bych místo nuly dal match_end+1 (popř. match_start+1 pokud chci i výskyty, které jsou přes sebe).
This would have been so hard to fix when you don't know that there is in fact an easy fix.
19.9.2017 18:32 michal
Rozbalit Rozbalit vše Re: Python - označení všech výskytů řetězce
match_end+1 nebo match_start+1 to nechce, viz error níže:

TypeError: unsupported operand type(s) for +: 'TextIter' and 'int'
wamba avatar 19.9.2017 21:00 wamba | skóre: 38 | blog: wamba
Rozbalit Rozbalit vše Re: Python - označení všech výskytů řetězce
Jo match_end není číslo, moje chyba. Tak nahradit pro další výskyty start_iter za match_end před .forward_search viz příklad ř. 191-199

Nejlépe je u takových dotazů uvést co možná nejmenší funkční příklad, aby se to dalo otestovat.
This would have been so hard to fix when you don't know that there is in fact an easy fix.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.