Instalare Pyton
Scriptul este ăsta, se salveaza in folderul unde este fisierul excel ce contine in coloana A, numita Nume si prenume, numele complet al utilizatorului, cu litere mari, initiala tatalui prenumele si, in paranteze, unde este cazul, numele de dupa casatorie, iar in coloana b emailul. Scriptul adauga coloane pentru Nume, Prenume, username, scoate diacriticile.
Ce nu face, trebuie verificat si corectat, facut manual
1. Daca sunt doua nume, al doilea nume este scris cu litera mica, se corecteaza in fisierul final
2. Daca initiala tatalui contine diacritice, se corecteaza in fisierul initial
3. Daca initiala tatalui are doua initiale, se elimina una din ele in fisierul initial
Se corecteaza fisierul de intrare, este la sfarsit:
Deschide fișierul Excel
input_file = "Seria2-G7.xlsx"
output_file = "tabel_procesat.xlsx"
Script pyton, salvat la mine ca procesare_tabel1.py
--------------------------------------
import openpyxl
import re
from unidecode import unidecode
# Funcție pentru a prelucra numele
def prelucrare_nume(nume):
nume = re.sub(r"\s*[-–]\s*", "-", nume.strip()) # Normalizează separatorii între nume
cuvinte = nume.split(" ")
nume_final = "-".join([cuvant.capitalize() for cuvant in cuvinte if cuvant])
return nume_final
# Funcție pentru a prelucra prenumele
def prelucrare_prenume(prenume):
prenume = prelucrare_nume(prenume)
prenume_list = prenume.split("-")
# Capitalizează corect fiecare prenume
prenume_list = [cuvant.capitalize() for cuvant in prenume_list]
# Păstrează doar primele două prenume
return "-".join(prenume_list[:2])
# Funcție pentru a genera username-ul
def genereaza_username(prenume, nume):
prenume = unidecode(prenume.lower())
nume = unidecode(nume.lower())
return f"{prenume}.{nume}"
# Deschide fișierul Excel
input_file = "Seria2-G7.xlsx"
output_file = "tabel_procesat.xlsx"
wb = openpyxl.load_workbook(input_file)
sheet = wb.active
# Adaugă anteturile pentru noile coloane
sheet["C1"] = "Nume"
sheet["D1"] = "Prenume"
sheet["E1"] = "Username"
# Procesează fiecare rând
for row in sheet.iter_rows(min_row=2, max_row=sheet.max_row, min_col=1, max_col=1):
celula_originala = row[0].value
if celula_originala:
# Extrage componentele din text
pattern = r"^(.*?)(?:\s+[A-Z\.]+\s+)(.*?)(?:\s+\(.*?\))?$"
match = re.match(pattern, celula_originala)
if match:
nume = prelucrare_nume(match.group(1))
prenume = prelucrare_prenume(match.group(2))
username = genereaza_username(prenume, nume)
# Scrie datele în noile coloane
sheet[f"C{row[0].row}"] = nume
sheet[f"D{row[0].row}"] = prenume
sheet[f"E{row[0].row}"] = username
# Salvează fișierul rezultat
wb.save(output_file)
print(f"Fișier procesat salvat ca {output_file}")