Newsgroup: it.comp.macintosh
Titolo: [OT ma non troppo] elenco indirizzi

Salve a tutti. Ho un problema.
Ho vari file, certi file di testo, altri appunti, con degli indirizzi
email. Sono separati tra di loro dalle parentesi < > e una virgola.
Io vorrei avere alla fine un file di testo, dove ci siano tutti questi
indirizzi uno per fila. es:
cippa...@timmm.org
ce...@limm.bin
lu...@zim.cu
altra cosa, molto probabilmente, ci sono indirizzi doppi e vorrei
eliminare i doppioni. Ho provato a guardare negli altri news e ho
trovato questo script per eliminare i doppioni (secondo l'autore):
Sub TrovaDuplicati()
Dim r As Object
Dim n As Long
Dim myRange As String
myRange = "A1:A8000"
Set r = Range(myRange)
For n = 1 To r.Rows.Count
If r.Cells(n, 1) = r.Cells(n + 1, 1) And r.Cells(n + 1, 1) <> "" Then
_
MsgBox "Duplicate data in " & r.Cells(n + 1, 1).Address: _
r.Cells(n + 1, 1).Font.Bold = True: _
r.Cells(n + 1, 1).ClearContents: _
Worksheets("Foglio1").Rows(n + 1).Delete: _
n = n - 1
Next n
End Sub
Pensavo che questo fosse uno script che si potesse usare in Excel... ma
non so dove inserirlo!!! Nelle macro non ci riesco.
Sapete voi come devo fare?? Ho Excel e anche FileMaker, oppure ditemi
voi se ci sono altri soft in grado di farlo.
Avevo anche pensato di importare gli indirizzi da Outlook.... ma prima
di farlo volevo un vostro parere.
ciao!!
-- 
http://www.digitalino.com

 email. Sono separati tra di loro dalle parentesi < > e una virgola.
Mmm... questi indirizzi sono sparsi lungo tutta la lunghezza dei file?
-- 
Jollino
IRC Operator on 
irc.discussioni.org
 [#amici]
Per rispondere togli il freno a mano

 Mmm... questi indirizzi sono sparsi lungo tutta la lunghezza dei file?
yes
-- 
http://www.digitalino.com

 indirizzi uno per fila. es:
Se non ti schifa passare da Excel (o simile) puoi importare il file o
aprirlo come file .CSV (comma separated value), e da li' poi salvarlo come
file di testo.
Tutto cio' ovviamente se ho capito bene come e' impostato questo file.
--
Luca P.©
- Proud member of i.c.h.p. -
"There's an unceasing wind that blows through this night
And there's dust in my eyes, that blinds my sight
And silence that speaks so much louder that words,
Of promises broken."

 Tutto cio' ovviamente se ho capito bene come e' impostato questo file.
Non mi schifa affatto passare da Excel, anzi!!!
Infatti mi sembra che possa essere il sistema più adatto per eliminare i
doppioni, giusto??
-- 
http://www.digitalino.com

 Perl gia` incluso per eliminare i doppioni. BBEdit full, non il light.
cosa intendi per una ricerca a regex??
scusami, ma sono totalmente sterile sull'argomento.
grazie MBalestra
-- 
http://www.digitalino.com

 serve una mano fatti vivo.
Ho guardato nell'help, manual e tutti gli aiuti, ma non ho trovato
niente :-((
-- 
http://www.digitalino.com

 il simbolismo delle regexp (che BBEdit identifica con "grep").
regexp... mancava una p..... ok, ora guarda, grazie
-- 
http://www.digitalino.com

 Salve a tutti. Ho un problema.
Ho buttato giù una piccola cosa in python. È una cosa *brutale* e non è 
per niente ottimizzata (pensa che ottengo un sacco di risultati vuoti), 
ma l'ho fatta in cinque minuti quindi accontèntati :P
Situazione: una cartella con dei file .txt in cui ci sono questi 
indirizzi.
---8<--- file1.txt ---8<---
questo è un file qualsiasi <indir...@e.mail>, <indir...@e.mail>.
bla bla
<indir...@e.mail>
--->8--- file1.txt --->8---
(i primi due indirizzi sono sulla stessa riga, non vorrei che il 
wrapping li troncasse)
---8<--- file2.txt ---8<---
<indir...@e.mail>,
<indir...@e.mail>.
--->8--- file2.txt --->8---
---8<--- file3.txt ---8<---
<al...@beta.gamma>
--->8--- file3.txt --->8---
---8<--- noncentraniente.boh ---8<---
bla bla bla
--->8--- noncentraniente.boh --->8---
Lo scriptino:
---8<--- prendi.py ---8<---
import os
import re
lista = []
indirizzi = []
files = os.listdir(".")
for file in files:
   if file[-4:].upper() == ".TXT":
      lista.append(file)
for file in lista:
   f = open(file)
   linee = f.readlines()
   f.close()
   for linea in linee:
      if linea.find("<") < linea.find("@") < linea.find(">"):
         ind = re.findall("(<(\S*)>)*", linea)
         for i in ind:
            if i[0] != "":
               indirizzi.append(i[1])
for indirizzo in indirizzi:
   print indirizzo
--->8--- prendi.py --->8---
Tutto nella stessa cartella, come output dà (copio testualmente):
[topexan:~/Temp/robetta] jollino% python prendi.py
indir...@e.mail
indir...@e.mail
indir...@e.mail
indir...@e.mail
indir...@e.mail
al...@beta.gamma
[topexan:~/Temp/robetta] jollino% 
Spero possa esserti utile
Daniele


 Spero possa esserti utile
sicuramente, se mi sai dire come usarlo.
devo prendere il tuo script, chiamarlo prendi.py e poi??
scusami, ma sono totalmente all'oscuro di programmazione.
-- 
http://www.digitalino.com

 devo prendere il tuo script, chiamarlo prendi.py e poi??
Puoi chiamarlo anche icmebello.py :) Mettilo nella stessa cartella dove 
hai quei file .txt, e da terminale fai "python icmebello.py" (senza 
virgolette).
se invece vuoi che si veda TUTTI i file (non solo i .txt), dimmelo che 
domani pomeriggio appena posso respirare un po' di più lo modifico (sono 
due linee, comunque.. ma ora non faccio in tempo :)


 due linee, comunque.. ma ora non faccio in tempo :)
Non è un problema, posso prendere tutti gli indirizzi e fare un file
unico.
-- 
http://www.digitalino.com

 unico.
Comunque, per fargli controllare tutti i file nella directory corrente 
(anche se stesso :), lo script va così modificato:
---8<---
import os
import re
lista = []
indirizzi = []
files = os.listdir(".")
for file in files:
   f = open(file)
   linee = f.readlines()
   f.close()
   for linea in linee:
      if linea.find("<") < linea.find("@") < linea.find(">"):
         ind = re.findall("(<(\S*)>)*", linea)
         for i in ind:
            if i[0] != "":
               indirizzi.append(i[1])
for indirizzo in indirizzi:
   print indirizzo
--->8---
Insomma, in pratica non gli fai rifare una lista in cui mettere solo i 
file che finiscono per .txt.
Trucchettino: facendo "python scriptino.py > listaindirizzi.txt", 
l'output del programma viene scritto nel file listaindirizzi.txt. :)
(anche se forse lo sapevi già).


 script č molto semplice.
va bene MacPython 2.2.2 oppure PyPad 1.0 ???

 va bene MacPython 2.2.2 oppure PyPad 1.0 ???
Non so cosa sia PyPad, ma se MacPython 2.2.2 è il port per OS 9 di 
Python 2.2.2 è perfetto :)
Questo script dovrebbe funzionare con tutte le versioni dalla 2.0.0 in 
su, e forse anche con 1.5.x.


mi sa che c'è qualche cosa che no va, mi da errore:
OS erroe kine 7 in ?
file=os.listdir(".")
-- 
http://www.digitalino.com

 file=os.listdir(".")
Già, sotto OS 9 non ho idea di come dirgli "la directory corrente" 
(sotto unix si identifica appunto con ".", e os X si accontenta). Prova 
a metterci il percorso completo separando le cartelle con il duepunti, 
per esempio:
Macintosh HD:Documenti:Pippo:Sandrino bla bla


mi da sempre una scaterva di errori... che palle!!!
E' inevitabile per chi non capisce una emerita cippa di minchia di
programmazione avventurarsi in queste cose. Proverò da X
-- 
http://www.digitalino.com