Oppure

Loading
03/09/13 14:38
pistilloi

Salve, mi serve un dizionario per ruzzle, ho scaricato il GNU dictionary, in formato txt chiamato it_IT.txt; ma si presenta cosi:

abbarcato/EyT
abbaruffando/D
abbaruffare/ALKhlTXI
abbaruffato/EyT
Abbasanta
abbassabile/STU
abbassalingua/Tq
abbassamento/OTq
abbassando/D
abbassare/ALKhlTXI
abbassata/QTU
abbassato/EyT
abbasso
abbastanza
Abba/T
Abbateggio
abbattendo/D
abbattere/BTXI
abbattibile/STU
abbattifieno/Tq
abbattimento/OTq
abbattitore/STqr
...
...

quindi è chiaro che lo "\" e i caratteri post-posti, son di tropo. Allorché ho scritto questo piccolo script, che mi par logicamente coerente, ma il file risultante è vuoto.



import string
import argpars 


parser = argparse.ArgumentParser()
parser.add_argument("infile")
parser.add_argument("outfile")
args = parser.parse_args()



input = open( args.infile ,'r') 	
lista = input.read() 
input.close()

newlista = ""

for s in lista:
	if string.find(s,"/") != 1:
		newlista += s[:string.find(s,"/")]+"\n"
	else:
		newlista += s+"\n"
    
output = open( args.outfile ,'w') 
output.write(newlista)
output.close()


eseguo lo script nel seguente modo python script.py it_IT.txt namenewdict.txt

Agli esperti la parola! xD xD xD
aaa
03/09/13 17:57
ora, premetto che non so il python ma quel for s in lista: non mi convince, s dovrebbe essere una stringa ma usato in qual modo credo che non contenga una sola riga, ma tutte. Però non so proprio cosa dirti........
03/09/13 18:30
ZioCrocifisso
Il testo dopo / puoi toglierlo con sed:
sed 's/\/.*//' < filedizionario.txt > nuovofile.txt
aaa
05/09/13 13:06
pistilloi
ho provato quest' unix command, ottenendone alcun risultato; poi ho controllato il sinottico del commando sad, esso appariva circa cosi:

 sad /parola_da_sostituire/parola_con_cui_sostituire/ <file_input.txt> file_output.txt


non sono pratico di shell ed'espressioni regolari quindi non m'è chiaro il commando da te consigliato, sta di fatto che non adempie allo scopo!
aaa
05/09/13 13:58
ZioCrocifisso
Il comando è sed (stream editor), non sad, e inoltre, non so dove l'hai trovato, ma è sbagliato in quel modo, anche perché sed non è un semplice sostitutore di espressioni regolari e non avrebbe motivo di usare quella sintassi con / se lo fosse.
Ultima modifica effettuata da ZioCrocifisso 05/09/13 14:06
aaa
05/09/13 15:39
pistilloi
L'ho trovato nel primo link propostomi da google, questo: linux.about.com/od/commands/l/… in seguito riporto la descrizione dell'opzione s/regexp/replacement/
Attempt to match regexp against the pattern space. If successful, replace that portion matched with replacement. The replacement may contain the special character & to refer to that portion of the pattern space which matched, and the special escapes  through  to refer to the corresponding matching sub-expressions in the regexp.


So che sed (scusa l'errore di battitura) non è un semplice sostitutore di parole, bensì una suite completa per la manipolazione del testo; purtuttavia il commando da te consigliato non produce risultato e poiché io non lo capisco in ogni suo dettaglio non posso neanche darne una motivazione. Tu puoi?
aaa
05/09/13 17:46
ZioCrocifisso
Se guardi bene, nel comando che mi hai postato prima, manca la 's' prima del /. Senza di essa, cambia totalmente il significato del comando, perché significa "in ogni riga contenente parola_da_sostituire esegui il comando parola_con_cui_sostituire". Se al posto di parola_con_cui_sostituire non c'era niente, significa che non farà niente. Hai scritto il comando nel modo esatto in cui io l'ho postato? Perché a me funziona, e non vedo perché non dovrebbe.
[nix@localhost tmp]$ echo 'abbarcato/EyT 
> abbaruffando/D 
> abbaruffare/ALKhlTXI 
> abbaruffato/EyT 
> Abbasanta 
> abbassabile/STU 
> abbassalingua/Tq 
> abbassamento/OTq 
> abbassando/D 
> abbassare/ALKhlTXI 
> abbassata/QTU 
> abbassato/EyT' > a.txt
[nix@localhost tmp]$ sed 's/\/.*//' < a.txt > b.txt
[nix@localhost tmp]$ more b.txt 
abbarcato
abbaruffando
abbaruffare
abbaruffato
Abbasanta 
abbassabile
abbassalingua
abbassamento
abbassando
abbassare
abbassata
abbassato
aaa
06/09/13 7:43
pistilloi
Si, mea culpa! Ho perso il senno tra il groviglio di file e gli ho dato in pasto un file vuoto :-|:). Grazie dell'aiuto!
aaa