Advertisement
nicuf

Delete double empty spaces in html tags

Nov 23rd, 2021 (edited)
832
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.19 KB | None | 0 0
  1. EXPLANATION:
  2.  
  3. ROMANIAN: https://neculaifantanaru.com/python-sterge-spatiile-goale-duble-din-tagurile-html.html
  4. ENGLISH:  https://neculaifantanaru.com/en/python-delete-double-empty-spaces-in-html-tags.html
  5. ----------------------------------
  6.  
  7. import re
  8. import os
  9.  
  10.  
  11. def read_text_from_file(file_path):
  12.     """
  13.    Aceasta functie returneaza continutul unui fisier.
  14.    file_path: calea catre fisierul din care vrei sa citesti
  15.    """
  16.     with open(file_path, encoding='utf8') as f:
  17.         text = f.read()
  18.         return text
  19.  
  20.  
  21. def write_to_file(text, file_path):
  22.     """
  23.    Aceasta functie scrie un text intr-un fisier.
  24.    text: textul pe care vrei sa il scrii
  25.    file_path: calea catre fisierul in care vrei sa scrii
  26.    """
  27.     with open(file_path, 'wb') as f:
  28.         f.write(text.encode('utf8', 'ignore'))
  29.  
  30.  
  31. def replace_white_spaces(tag_name, file_path):
  32.     """
  33.    Aceasta functie modifica textul dintre un tag dat ca argument.
  34.    """
  35.     # citesti textul din fisier
  36.     text = read_text_from_file(file_path)
  37.     # transformam textul din fisier intr-un string
  38.     text = str(text)
  39.     # aici e pattern-ul pentru expresia regex; (.*?) inseamna ca preia tot ce este intre tag-uri
  40.     # modifici expresia regulata in functie de ce tag dai ca argument pentru functie
  41.     pattern = re.compile('<{} class=\".*?\">(.*?)</{}>'.format(tag_name, tag_name))  #legat de {}, da, este ceva specific Python. Este operatorul de formatare. Practic ce face, este sa introducă tag-ul pe care îl vrei în expresia regulată
  42.     # aici se preiau toate textele dintre tag-uri
  43.     tag_texts = re.findall(pattern, text)
  44.     for tag_text in tag_texts:
  45.         # strip taie toate spatiile de la inceputul si finalul text-ului
  46.         new_text = tag_text.strip()
  47.         m = re.findall('<em>(.*?)</em>', new_text)
  48.         if len(m) >= 1:
  49.             text_em = str(m[0])
  50.             text_em_new = text_em.strip()
  51.             new_text = new_text.replace(text_em, text_em_new)
  52.         # facem split la text dupa spatiu si apoi unim cuvintele gasite printr-un singur spatiu
  53.         new_text = " ".join(new_text.split())
  54.         # textul nou va fi textul initial, dar care are textul dintre tag-uri inlocuit cu textul prelucrat
  55.         text = text.replace(tag_text, new_text)
  56.     # la final suprascriem continutul initial al fisierului cu noul continut
  57.     write_to_file(text, file_path)
  58.  
  59.  
  60. def replace_white_spaces_only_html_php(tag_name, directory_name):
  61.     for file in os.listdir(directory_name):
  62.         filename = str(file)
  63.         print(filename)
  64.         # verificam daca fisierul se termina cu extensia html sau php
  65.         if filename.endswith(".html") or filename.endswith(".php"):
  66.             file_path = os.path.join(directory_name, filename)
  67.             # pentru fiecare fisier gasit, stergem spatiile in plus
  68.             replace_white_spaces(tag_name, file_path)
  69.         else:
  70.             continue
  71.  
  72.  
  73. if __name__ == '__main__':
  74.     # setezi numele folderului
  75.     # nu uita de slash-urile duble
  76.     directory_name = "c:\\Folder2\\5"
  77.     # setezi numele tag-ului
  78.     tag_name = 'p'
  79.     # apelezi functia care itereaza prin director
  80.     replace_white_spaces_only_html_php(tag_name, directory_name)
  81.  
  82.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement