Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Dupa renuntarea la aparat dentar

pelerinaj in Balcik

Noul format Jpegli iși propu...

Dade, dade
 Parola la lock screen

Deparazitare externa pisici fara ...

Seriale turcesti/coreene online H...

Merita un Termostat Smart pentru ...
 Sfat achizitie MTB Devron Riddle

Problema mare cu parintii= nervi ...

switch microtik

Permis categoria B la 17 ani
 Sfaturi pentru pregatirea de eval...

Crapaturi placa

cum imi accesez dosarul electroni...

Momentul Aprilie 1964
 

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: 747
  • Î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: 743
  • Î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: 747
  • Î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: 747
  • Î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,954
  • Î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

Second Opinion Second Opinion

Folosind serviciul second opinion ne puteți trimite RMN-uri, CT -uri, angiografii, fișiere .pdf, documente medicale.

Astfel vă vom putea da o opinie neurochirurgicală, fără ca aceasta să poată înlocui un consult de specialitate. Răspunsurile vor fi date prin e-mail în cel mai scurt timp posibil (de obicei în mai putin de 24 de ore, dar nu mai mult de 48 de ore). Second opinion – Neurohope este un serviciu gratuit.

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