Advertisement
nicuf

Find double words

Jun 21st, 2023
893
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.39 KB | None | 0 0
  1. -----------------
  2. EXPLANATION"
  3.  
  4. English: https://neculaifantanaru.com/en/find-all-files-that-contain-a-double-words-string-or-number.html
  5. Romanian: https://neculaifantanaru.com/gaseste-toate-fisierele-care-contin-cuvinte-duble-string-sau-numar.html
  6. -----------------
  7.  
  8.  
  9. import os
  10. import re
  11.  
  12. def read_text_from_file(file_path):
  13.    """
  14.     Aceasta functie returneaza continutul unui fisier.
  15.     file_path: calea catre fisierul din care vrei sa citesti
  16.     """
  17.    with open(file_path, encoding='utf8', errors='ignore') as f:
  18.        text = f.read()
  19.        return text
  20.  
  21.  
  22. def write_to_file(text, file_path, encoding='utf8'):
  23.    """
  24.     Aceasta functie scrie un text intr-un fisier.
  25.     text: textul pe care vrei sa il scrii
  26.     file_path: calea catre fisierul in care vrei sa scrii
  27.     """
  28.    with open(file_path, 'wb') as f:
  29.        f.write(text.encode('utf-8', 'ignore'))
  30.  
  31.  
  32. def get_duplicates(directory_path, results_file, tag):
  33.    duplicates = dict()
  34.    fisiere_care_nu_au_id = ''
  35.    fisiere_duplicat = ''
  36.    id_pattern = re.compile('\$item_id = (.*?);')
  37.    for f in os.listdir(directory_path):
  38.            if f.endswith('.html') and f != 'termeni-si-conditii.html' and f != "parteneri.html":
  39.                filepath = directory_path + '//' + f
  40.                file_text = read_text_from_file(filepath)
  41.                number = re.findall(id_pattern, file_text)
  42.                if len(number) != 0:
  43.                    number = number[0]
  44.                    number = number.strip()
  45.                    if number in duplicates.keys():
  46.                        duplicates[number].append(f)
  47.                    else:
  48.                        duplicates[number] = [f]
  49.                else:
  50.                    fisiere_care_nu_au_id = fisiere_care_nu_au_id + f + '\n'
  51.  
  52.    for key in duplicates.keys():
  53.        if len(duplicates[key]) >= 2:
  54.            for f in duplicates[key]:
  55.                fisiere_duplicat = fisiere_duplicat + f + '\n'
  56.            fisiere_duplicat += '\n\n'
  57.  
  58.    # i-au toate numerele din intervalul 1 - id maxim
  59.    # modificare in numere intregi
  60.    numere_intregi = [int(i) for i in list(duplicates.keys())]
  61.    interval = list()
  62.    if tag == 'ro':
  63.        interval = [i for i in range(1, max(numere_intregi) + 1)]
  64.    elif tag == 'en':
  65.        interval = [i for i in range(5000, max(numere_intregi) + 1)]
  66.  
  67.    numere_care_lipsesc = list()
  68.    for number in interval:
  69.        if number not in numere_intregi:
  70.            numere_care_lipsesc.append(number)
  71.    print("MAX: ", max(numere_intregi))
  72.    print("NUMERE CARE LIPSESC: ", numere_care_lipsesc)
  73.  
  74.    fisiere_care_lipsesc_id = ''
  75.    for numar in numere_care_lipsesc:
  76.        fisiere_care_lipsesc_id = fisiere_care_lipsesc_id + str(numar) + '\n'
  77.  
  78.    result = "FISIERE CARE NU AU ID \n\n" + fisiere_care_nu_au_id + '\n' + "FISIERE DUPLICAT \n\n" + fisiere_duplicat  + '\n' + "NUMERE CARE LIPSESC \n\n" + fisiere_care_lipsesc_id
  79.    write_to_file(result, results_file)
  80.  
  81.    print("Scriere efectuata cu succes.")
  82.  
  83. if __name__ == '__main__':
  84.    directory_path = "e:\\Carte\\BB\\17 - Site Leadership\\Principal\\en"   # AICI SCHIMB PATCH cu ro sau cu en
  85.    results_file = "e:\\Carte\\BB\\17 - Site Leadership\\Principal\\ro\\results_duplicates.txt"  # AICI APAR REZULTATELE FINALE
  86.  
  87.    get_duplicates(directory_path, results_file, "en") # "ro"  # AICI SCHIMB PATCH cu ro sau cu en  (SCHIMBA SI MAI SUS )
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement