vineri, 3 ianuarie 2025

Adaugare utilizatori in moodle folosind un script pyton

 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}")


Niciun comentariu:

Trimiteți un comentariu