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