View difference between Paste ID: rhRyfqJJ and e2vY70di
SHOW: | | - or go back to the newest paste.
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
35+
36
    
37-
    # transformam textul din fisier intr-un string
37+
38
    
39-
    # aici e pattern-ul pentru expresia regex; (.*?) inseamna ca preia tot ce este intre tag-uri
39+
    
40-
    # modifici expresia regulata in functie de ce tag dai ca argument pentru functie
40+
    articol_pattern = re.compile('<!-- ARTICOL START -->[\s\S]*?<!-- ARTICOL FINAL -->[\s\S]*?')
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ă
41+
    text_articol = re.findall(articol_pattern, text)
42-
    # aici se preiau toate textele dintre tag-uri
42+
    if len(text_articol) != 0:
43-
    tag_texts = re.findall(pattern, text)
43+
        text_articol = str(text_articol[0])
44-
    for tag_text in tag_texts:
44+
        pattern = re.compile('<{} class=\".*?\">(.*?)</{}>'.format(tag_name, tag_name))  
45-
        # strip taie toate spatiile de la inceputul si finalul text-ului
45+
        
46-
        new_text = tag_text.strip()
46+
        tag_texts = re.findall(pattern, text_articol)
47-
        m = re.findall('<em>(.*?)</em>', new_text)
47+
        new_text_articol = text_articol
48-
        if len(m) >= 1:
48+
        for tag_text in tag_texts:
49-
            text_em = str(m[0])
49+
            
50-
            text_em_new = text_em.strip()
50+
            new_text = tag_text.strip()
51-
            new_text = new_text.replace(text_em, text_em_new)
51+
            m = re.findall('<em>(.*?)</em>', new_text)
52-
        # facem split la text dupa spatiu si apoi unim cuvintele gasite printr-un singur spatiu
52+
            if len(m) >= 1:
53-
        new_text = " ".join(new_text.split())
53+
                text_em = str(m[0])
54-
        # textul nou va fi textul initial, dar care are textul dintre tag-uri inlocuit cu textul prelucrat
54+
                text_em_new = text_em.strip()
55-
        text = text.replace(tag_text, new_text)
55+
                new_text = new_text.replace(text_em, text_em_new)
56-
    # la final suprascriem continutul initial al fisierului cu noul continut
56+
            
57-
    write_to_file(text, file_path)
57+
            new_text = " ".join(new_text.split())
58
            
59
            new_text_articol = new_text_articol.replace(tag_text, new_text)
60
        
61-
    for file in os.listdir(directory_name):
61+
        text = text.replace(text_articol, new_text_articol)
62-
        filename = str(file)
62+
        write_to_file(text, file_path)
63-
        print(filename)
63+
    else:
64-
        # verificam daca fisierul se termina cu extensia html sau php
64+
        print("Fisierul nu are structura corecta: ", file_path)
65-
        if filename.endswith(".html") or filename.endswith(".php"):
65+
66-
            file_path = os.path.join(directory_name, filename)
66+
67-
            # pentru fiecare fisier gasit, stergem spatiile in plus
67+
68-
            replace_white_spaces(tag_name, file_path)
68+
    for root, dirs, files in os.walk(directory_name):
69-
        else:
69+
        for f in files:
70-
            continue
70+
            if f.endswith('html'):
71
                file_path = os.path.join(root, f)
72
                replace_white_spaces(tag_name, file_path)
73
            else:
74-
    # setezi numele folderului
74+
                continue
75-
    # nu uita de slash-urile duble
75+
76-
    directory_name = "c:\\Folder2\\5"
76+
77-
    # setezi numele tag-ului
77+
    
78
    
79-
    # apelezi functia care itereaza prin director
79+
    directory_name = 'c:\\Folder1'
80
    
81
    tag_name = 'p'
82
    
83
    replace_white_spaces_only_html_php(tag_name, directory_name)
84