Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Laptop office 2500 lei

sugerarea bacsisului de catre pat...

Bara Golf 7 Variant

Xiaomi 13 T Pro notificari
 De ce a disparut acest produs din...

Orange anunța mariri de preț, iar...

Recomandare casti audio over ear ...

La multi ani @Ann0nyym0us!
 La multi ani @Andrei11161810!

Glume cu si despre Dacii

Ati cumparat de pe acest site? Es...

Gand
 Diametru si "model" teava...

Eroare L3 dezumidificator StarLight

caut si nu gasesc Philips casetofon

Cum trec la noul Google Analytics?
 

Python si REGEX: De ce nu face replace la re.sub si la re.compile in aceste situatii?

- - - - -
  • Please log in to reply
4 replies to this topic

#1
me_suzy

me_suzy

    Member

  • Grup: Members
  • Posts: 736
  • Înscris: 29.04.2007
salut, ma confrunt cu o situatie ciudata. Aceste FIND and REPLACE nu merg. Adica find merge, dar replace nu merge.

In aceste 3 situatii, trebuie sa inlocuiesc un anuit regex cu (spatiu gol). Vedeti acolo acel ' ' Daca la re.findall as pune orice regex simplu, de exemplu un html tag <div> atunci se face inlocuirea perfect. Dar daca este un alt gen de regex, cum sunt cele de mai jos, inlocuirea nu se mai face. Adica nu se intampla nimic... Are cineva vreo solutie?

if len(re.findall('(?!<p>).+?(?<!</p>)$', page_text)) != 0:
   page_text = re.sub('(?!<p>).+?(?<!</p>)$', '', page_text)
   counter_img += 1
OR

if len(re.findall('^\s+</p>', page_text)) != 0:
   page_text = re.compile(r'', page_text)
   counter_img += 1

OR

if len(re.findall('\n\s*', page_text)) != 0:
   page_text = re.sub('\n\s*', '', page_text)
   counter_img += 1


Edited by me_suzy, 04 April 2022 - 23:22.


#2
bbox

bbox

    Member

  • Grup: Members
  • Posts: 725
  • Înscris: 12.05.2005
Nu ar trebui sa folosesti niste flag-uri (global, multiline, case insensitive ...)?
Testeaza regex-urile pe https://regex101.com/

#3
me_suzy

me_suzy

    Member

  • Grup: Members
  • Posts: 736
  • Înscris: 29.04.2007
nu stiam ca in Python (re.sub si re.compile) se folosesc flag-uri (global, multiline, case insensitive ...).

Stupid este faptul ca pe site-ul https://regex101.com/ imi merg formulele Python  . De exemplu: https://regex101.com/r/IO1qQS/1

Deci FIND imi merge. Stiam asta. Problema este la REPLACE !

#4
me_suzy

me_suzy

    Member

  • Grup: Members
  • Posts: 736
  • Înscris: 29.04.2007

 bbox, on 05 aprilie 2022 - 06:20, said:

Nu ar trebui sa folosesti niste flag-uri (global, multiline, case insensitive ...)?
Testeaza regex-urile pe https://regex101.com/

EVRIKA !! Ai avut dreptate ! Trebuia sa adaug un flag de tipul flags=re.MULTILINE

Merge Replace acuma ! Thanks

if len(re.findall('(?!<p>).+?(?<!</p>)$', page_text, flags=re.MULTILINE)) != 0:
				page_text =  re.sub('(?!<p>).+?(?<!</p>)$', '', page_text, flags=re.MULTILINE)
				counter_img += 1


#5
sags

sags

    Senior Member

  • Grup: Senior Members
  • Posts: 9,767
  • Înscris: 24.04.2013
Iti trebuie:
  • un al treilea argument re.M la re.findall()
  • doua argumente suplimenatre la re.sub(): , 0, re.M
​re.M este pentru ‘multiline’, adica sa testeze fiecare linie in parte nu intregul string. Contorul 0 ii spune sa faca toate inlocuirile posibile, nu doar prima ocurenta.

Vad ca ai gasit deja. LE: De fapt nici re.findall() nu iti mergea corect decat din intamplare…

Edited by sags, 05 April 2022 - 08:12.


Anunturi

Chirurgia spinală minim invazivă Chirurgia spinală minim invazivă

Chirurgia spinală minim invazivă oferă pacienților oportunitatea unui tratament eficient, permițându-le o recuperare ultra rapidă și nu în ultimul rând minimizând leziunile induse chirurgical.

Echipa noastră utilizează un spectru larg de tehnici minim invazive, din care enumerăm câteva: endoscopia cu variantele ei (transnazală, transtoracică, transmusculară, etc), microscopul operator, abordurile trans tubulare și nu în ultimul rând infiltrațiile la toate nivelurile coloanei vertebrale.

www.neurohope.ro

0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

Forumul Softpedia foloseste "cookies" pentru a imbunatati experienta utilizatorilor Accept
Pentru detalii si optiuni legate de cookies si datele personale, consultati Politica de utilizare cookies si Politica de confidentialitate