realsociedad10 Posted November 20, 2016 Report Share Posted November 20, 2016 Deci acesta este un script care lucreaza cu DEX.txt (romanesc in cazul meu).Compara dex-ul rom. cu o lista de cuvinte_mixte.txt (120mb),rezultatul apare in ''romanesti.txt'' chestia e ca rezultatul e ff slabut , asa ca as vrea sa fie modificat in asa fel incat rez. sa fie cat mai exacte,sa va dau un ex.: de exemplu dex-ul contine cuv.: ''adina'' format din 5 litere,deci sa se potriveasca cu macar 4 cuv sau chiar toate 5 Sa va dau asa un simplu exemplu nu stiu daca asta e cea mai buna solutie ,in fine ,acesta este un cod, o expresie regulata,care extrage cuv. Adina dintr-o fila cu civinte_mixte.txt--> ^[Aa]dina.* cuvintele din Output.txt or sa fie asa adina@123 Adina01 adina#2016!@3 Dupa cum vedeti respecta cuvantul intreg Adina iar dupa adina poate fi orice,iar inainte Nimica! Scriptul Python: import sqlite3 def lungime_fisier(fisier): i = 0 with open(fisier) as data: for line in data: i +=1 return i def creaza_bazadate(nume_baza_date): conn = sqlite3.connect(nume_baza_date) conn.execute('''CREATE TABLE IF NOT EXISTS dex (id INTEGER PRIMARY KEY AUTOINCREMENT, words VARCHAR(50) NOT NULL);''') conn.close() print "Am creat baza de date '%s'!" % nume_baza_date def introduc_dictionar(dictionar, nume_baza_date): conn = sqlite3.connect(nume_baza_date) lungime_dictionar = lungime_fisier("dictionar.txt") with open(dictionar) as fisier: for linie in fisier: linie = linie.replace("\n", "") cursor = conn.cursor() cursor.execute("INSERT INTO dex (words) VALUES (%r)" % linie) conn.commit() conn.close() print "Am introdus %d cuvinte in baza de date %s" % (lungime_dictionar, nume_baza_date) def db(nume_baza_date): lista = [] conn = sqlite3.connect(nume_baza_date) cursor = conn.cursor() data = cursor.execute("SELECT words from dex") for cuvant in data: if cuvant[0] not in lista: lista.append(str(cuvant[0])) return lista def potriviri_exacte(cuvinte_mixte, nume_baza_date): lista_potriviri_exacte = [] conn = sqlite3.connect(nume_baza_date) with open(cuvinte_mixte) as fisier: for linie in fisier: linie = linie.replace("\n", "") cursor = conn.cursor() cauta_cuvant = cursor.execute("SELECT words FROM dex WHERE words = %r LIMIT 1" % linie) for cuvant in cauta_cuvant: lista_potriviri_exacte.append(str(cuvant[0])) return lista_potriviri_exacte def potriviri_derivate(cuvinte_mixte, cuvinte_romanesti, nume_baza_date): potriviri_derivate = [] dex = db(nume_baza_date) for cuvant in dex: with open(cuvinte_mixte) as fisier: for linie in fisier: linie = linie.replace("\n", "") if cuvant in linie: potriviri_derivate.append(str(linie)) for cuvant in potriviri_derivate: with open(cuvinte_romanesti, "a") as fisier: fisier.write(cuvant + "\n") fisier.close() #creaza_bazadate("dex.db") #introduc_dictionar("DEX.txt", "dex.db") #potriviri_derivate("cuvinte_mixte.txt", "romanesti.txt", "dex.db") Quote Link to comment Share on other sites More sharing options...
hades Posted November 21, 2016 Report Share Posted November 21, 2016 Ba lache, iei codu de-aici: Nu te uiti peste el (ca daca te uitai vedeai ca e de cacat sa deschizi fisiere in for, si apoi ceri ajutor pe munca altuia? Da contributia ta care ii? Fmm de sclavi, Quote Link to comment Share on other sites More sharing options...