Profilo di titino2

Nome titino2
Indirizzo email n/a
Messaggi20
  • Re: Non so da che parte farmi aiuto
    Forum >> Principianti
    Ciao a tutti...
    io da principiante ho risolto così:

    xq="            "
    [...]
            if len(r)==4:  # per processare --> punto o topolog ['', ' 714298.372', '4832489.913','577.285']
                x=r1          #Estraggo dalla stringa con le coordinate la "x"
                xo=x.strip()    #Elimino eventuali spazi vuoti iniziali
                xf=float(xo)    #Converto in float
                xfr=round(xf,2) #arrotondo la coordinata x alla 2 cifra decimale
                xs=xq[:-len(str(xfr))]+str(xfr)+"0"
    [...]
    mi dite se ho commesso qualche grave errore?

    Più vi chiedo:

    nelle stringhe che maneggio il numero degli spazi è variabile, questo mi da fastidio quindi vorrei uniformare il numero degli spazi che vi sono contenuti e lasciare solamente uno spazio tra i vari valori. Per fare questo io ho risolto in maniera molto empirica con dei replace a cascata ma mi sembra una soluzione molto migliorabile. Voi come fareste? Vi metto sotto la stringa originale, la stringa risultante e l'estrazione del mio script.

    fi=f.readlines()  #Leggo il file
    for i in range(0,l):
        fin=str(fi)
        if fin.startswith("   ") is True:    
            print fin
            rr=fin.replace("  "," ")
            print rr
            rrr=rr.replace("  "," ")
            print rrr
            rrrr=rrr.replace("  "," ")
            print rrrr
    
            r=fin.split(" ")
    Risultati:

    #print fin

    713077.454 4833258.372 449.9962

    #print rr

    713077.454 4833258.372 449.9962

    #print rrr

    713077.454 4833258.372 449.9962

    #print rrrr

    713077.454 4833258.372 449.9962

    Grazie a tutti ancora di tutto.


    --- Ultima modifica di titino2 in data 2017-10-11 14:21:52 ---
  • Re: Non so da che parte farmi aiuto
    Forum >> Principianti
    Ciao Daniele,

    concordo con te.. ma visto che sono un autodidatta e probabilmente molto propenso all'errore ho messo tutto il codice(che risulta lungo solo perche è la ripetizione di alcuni if altrimenti sarebbe banale e breve) giusto per avere spunti e suggerimenti.

    Comunque il codice a grandi linee produce un file che potrebbe essere quello da me richiesto anche se ancora ci sono degli errori di impaginazione che non so come risolvere (anche per questo ho messo tutto il codice così da darvi la possibilità di vedere dove sbaglio... magari ho sbagliato proprio l'approccio).

    Mi permetto di farvi un ulteriore domanda che magari mi aiuta a ricomporre il mio script risolvendo anche gli errori rimasti.

    Considerate che io ho delle stringhe contenenti dei valori x,y,z e altro. Questi valori devono essere inseriti all'interno di colonne, ovvero la colonna 9 contiene la x la colonna 10 la y la colonna 11 la z e la 12 altro. Le colonne x y hanno un allineamento a dx mentre la colonna z a sx. Come faccio a stabilire come devo formattare la nuova stringa risultante? Perché come vedete dal mio script io ho provato a giocarmela con gli spazi ma chiaramente come vedete nell'esempio sotto, appena un valore è più lungo o più corto si spagina tutta la serie.

    Grazie in anticipo.

    714298.370 4832489.910 0.00 0

    714302.20 4832485.610 0.00 0

    714294.656 4832494.094 577.286 0

    714294.660 4832494.090 0.00 0

    714298.370 4832489.910 0.00 0



  • Re: Non so da che parte farmi aiuto
    Forum >> Principianti
    Buonasera a tutti,
    seguendo i consigli ho fatto qualche passo in avanti ma ancora il risultato mi pare acerbo specie perche il file risultante non è ancora perfettamente identico al file di ingresso(eccezion fatta per l'arrotondamento delle coordinate). Vi allego il file di partenza ed il file prodotto dallo script e vedrete che acora non riesco a gestire bene gli a capo.
    Sotto vi metto il mio script...
    vi prego di darmi consigli e di pazientare se ho commesso qualche o molti errori.
    Grazie in anticipo per i consigli
    #Lettura del file
    f=open(r'C:\ProveTest_Campione.gca',"r")  #Apro il file
    fi=f.readlines()  #Leggo il file
    coordTR=open('C:\\Prove\\TrovaFS.txt',"w")  #Creo il nuovo file dove riscrivero il file con le coordinate tagliate
    #print "___________________Stampo il File completo___________________________________"
    ##print fi
    #print "___________________Fine Stampa File completo__________________________________"
    l=len(fi)
    for i in range(0,l):
        fin=str(fi)
        if fin.startswith("   ") is True:
    #____________Estrazione x y z con sulla base dello .split_________
            r=fin.split("  ")
            print r
            print len(r)
            if len(r)==4:  # per processare --> punto o topolog ['', ' 724345.372', '4234489.913','577.285']
    
                x=r1          #Estraggo dalla stringa con le coordinate la "x"
                xo=x.strip()    #Elimino eventuali spazi vuoti iniziali
                xf=float(xo)    #Converto in float
                xfr=round(xf,2) #arrotondo la coordinata x alla 2 cifra decimale
                print xo
                print xfr
    ##            coordTR.write("\n")
                coordTR.write("   "+str(xfr)+"  ")
                y=r2          #Estraggo dalla stringa con le coordinate la "y"
                yo=y.strip()    #Elimino eventuali spazi vuoti iniziali
                print yo
                yf=float(yo)    #Converto in float
                yfr=round(yf,2) #arrotondo la coordinata y alla 2 cifra decimale
                print yo
                print yfr
                coordTR.write(str(yfr)+"    ")
                z=r-1          #Estraggo dalla stringa con le coordinate la "z"
                zo=z.strip()    #Elimino eventuali spazi vuoti iniziali
                print zo
                zf=float(zo)    #Converto in float
                zfr=round(zf,2) #arrotondo la coordinata z alla 2 cifra decimale
                print zo
                print zfr
                coordTR.write(str(zfr))
    
            elif len(r)==5 and r3=="":  # per processare -->punto o topolog ['', ' 724345.372', '4234489.913', '', '577.285']
    
                x=r1          #Estraggo dalla stringa con le coordinate la "x"
                xo=x.strip()    #Elimino eventuali spazi vuoti iniziali
                xf=float(xo)    #Converto in float
                xfr=round(xf,2) #arrotondo la coordinata x alla 2 cifra decimale
                print xo
                print xfr
    ##            coordTR.write("\n")
                coordTR.write("   "+str(xfr)+"  ")
                y=r2          #Estraggo dalla stringa con le coordinate la "y"
                yo=y.strip()    #Elimino eventuali spazi vuoti iniziali
                print yo
                yf=float(yo)    #Converto in float
                yfr=round(yf,2) #arrotondo la coordinata y alla 2 cifra decimale
                print yo
                print yfr
                coordTR.write(str(yfr)+"    ")
                z=r-1          #Estraggo dalla stringa con le coordinate la "z"
                zo=z.strip()    #Elimino eventuali spazi vuoti iniziali
                print zo
                zf=float(zo)    #Converto in float
                zfr=round(zf,2) #arrotondo la coordinata z alla 2 cifra decimale
                print zo
                print zfr
                coordTR.write(str(zfr))
            elif len(r)==6 and r3=="":  # per processare --> linea ['', ' 724345.372', '4234489.913', '', '577.285', '0']
    
                x=r1          #Estraggo dalla stringa con le coordinate la "x"
                xo=x.strip()    #Elimino eventuali spazi vuoti iniziali
                xf=float(xo)    #Converto in float
                xfr=round(xf,2) #arrotondo la coordinata x alla 2 cifra decimale
                print xo
                print xfr
    ##            coordTR.write("\n")
                coordTR.write("   "+str(xfr)+"  ")
                y=r2          #Estraggo dalla stringa con le coordinate la "y"
                yo=y.strip()    #Elimino eventuali spazi vuoti iniziali
                print yo
                yf=float(yo)    #Converto in float
                yfr=round(yf,2) #arrotondo la coordinata y alla 2 cifra decimale
                print yo
                print yfr
                coordTR.write(str(yfr)+"    ")
                z=r-1          #Estraggo dalla stringa con le coordinate la "z"
                zo=z.strip()    #Elimino eventuali spazi vuoti iniziali
                print zo
                zf=float(zo)    #Converto in float
                zfr=round(zf,2) #arrotondo la coordinata z alla 2 cifra decimale
                print zo
                print zfr
                coordTR.write(str(zfr)+"   ")
                coordTR.write(r-1)
            elif len(r)<4:  # per processare --> testo ['', ' 724345.372', '4234489.913']
    
                x=r1          #Estraggo dalla stringa con le coordinate la "x"
                xo=x.strip()    #Elimino eventuali spazi vuoti iniziali
                xf=float(xo)    #Converto in float
                xfr=round(xf,2) #arrotondo la coordinata x alla 2 cifra decimale
                print xo
                print xfr
    ##            coordTR.write("\n")
                coordTR.write("   "+str(xfr)+"  ")
                y=r2          #Estraggo dalla stringa con le coordinate la "y"
                yo=y.strip()    #Elimino eventuali spazi vuoti iniziali
                print yo
                yf=float(yo)    #Converto in float
                yfr=round(yf,2) #arrotondo la coordinata y alla 2 cifra decimale
                print yo
                print yfr
                coordTR.write(str(yfr)+"    ")
                z=r-1          #Estraggo dalla stringa con le coordinate la "z"
                zo=z.strip()    #Elimino eventuali spazi vuoti iniziali
                print zo
                zf=float(zo)    #Converto in float
                zfr=round(zf,2) #arrotondo la coordinata z alla 2 cifra decimale
                print zo
                print zfr
                coordTR.write(str(zfr))
        else:
            if i<=1:  #per non mettere gli "\n" nell'intestazione
                print "Attributi "+fin
                coordTR.write(str(fin))
            elif i>1:
                print "Attributi "+fin
                coordTR.write("\n"+str(fin))
    coordTR.close()
    print "__________________Fine_______________________"
    f.close

  • Re: Non so da che parte farmi aiuto
    Forum >> Principianti
    Grazie in anticipo per la risposta.

    Vi prego di perdonare la non correttezza del mio programma e soprattutto la banalità, se non l'ho pubblicato prima è perché mi vergogno di quello che sono riuscito a fare.. vi assicuro che non è banale per mancanza di impegno ma solo per mancanza di capacità.

    Come premesso non so da che parte farmi... ho fatto un po di prove... ma veramente non so quale strada e quali "strumenti" utilizzare.Posso solo immaginare che la soluzione risieda nella creazione di qualche classe o qualche funzione... ma sinceramente non saprei come strutturarla.

    Ho messo ## nella parte che non ho cancellato e che volevo provare ad usare per poter capire qual'era almeno la riga che contiene le coordinate, ma dopo un po di prove mi pare di capire che questa strada non è quella giusta.

    Mi potete aiutare?





    #Lettura del file

    f=open(r'C:\Prove\Test.txt',"r")

    riga1 = f.readline()

    print riga1

    riga2 = f.readline()

    print riga2

    riga3 = f.readline()

    print riga3

    fi=f.readlines()

    print "___________________File completo___________________________________"

    print fi

    #questa parte era per provare a capire quando era la riga che conteneva le

    #coordinate visto che la riga delle coordinate inizia sempre con 3 spazi vuoti

    ##l=len(fi)

    ##print l

    ##print type(fi)

    ##for i in fi:

    ## print riga1[0:6]

    ## if riga1[0:2]==" ":

    ## print "geo"

    ## else:

    ## print "diverso"

    f.close




    Grazie ancora in anticipo
  • Non so da che parte farmi aiuto
    Forum >> Principianti
    Buongiorno a tutti,

    vi chiedo aiuto perche leggendo anche qualche guida non ho veramente idea di come posso fare.

    Io ho un file di testo contenente una serie di valori esadecimali ed una serie di coordinate con 3 cifre decimali. All'interno del file ogni riga che inizia con "topolog" "punto" "linea" "testo" è successivamente seguita da una serie di coordinate(che sono riferite rispettivamente al punto o alla lineea ecc..) e nel caso dei topolog anche da altri valori.Io volevo fare un programma che riscrive lo stesso file di testo ma con i valori delle coordinate arrotondate alla seconda cifra decimale.

    Ho fatto un po di prove e fino all apertura del file e l'inserimento del contenuto all interno di una lista o stringa ci riesco utilizzando le funzioni "readline e readlines" ma veramente non riesco ad arrivare oltre.

    Mi potete dare una mano?

    Sotto (e allegati) vi incollo il testo contenuto in un file txt che voglio elaborare e il testo rimaneggiato a mano che vorrei riuscire a produrre in automatico.




    --Testo Originale--




    Prova di troncamento

    topolog 59 505C 0 5 255 255 ffffffff ffffffff ffffffff

    953099.454 4833258.392 449.9962

    id 94562a9a

    id ad05cf55

    topolog 6 505C 0 5 255 255 ffffffff ffffffff ffffffff

    953036.809 4833296.546 49.4552

    id 5362d82c

    id 4a22524d

    id cfd329c4

    id 549e2492

    id 888d59ec

    id d6ee3849

    punto 5 932 ffffffff ffffffff ffffffff

    953380.340 4832909.096 695.993

    punto 5 932 ffffffff ffffffff ffffffff

    953925.959 4832598.424 669.652

    linea 5 505063 5 255 255 ffffffff ffffffff ffffffff

    954298.392 4832489.953 599.286 0

    954302.200 4832485.609 599.286 0

    954306.295 4832489.250 599.286 0

    954302.429 4832493.563 599.286 0

    954298.392 4832489.953 599.286 0

    testo 5 T5005 0 0.0000 6.0000 50 f9bda380 ffffffff ffffffff 0 PIERO

    953203.838 4833256.502

    testo 5 T5005 0 0.0000 6.0000 50 f9bda380 ffffffff ffffffff 0 CLEMENTE

    953228.608 4833256.502

    finefile







    --Testo finale prodotto a mano--




    Prova di troncamento

    topolog 59 505C 0 5 255 255 ffffffff ffffffff ffffffff

    953099.45 4833258.39 449.9962

    id 94562a9a

    id ad05cf55

    topolog 6 505C 0 5 255 255 ffffffff ffffffff ffffffff

    953036.81 4833296.55 49.46

    id 5362d82c

    id 4a22524d

    id cfd329c4

    id 549e2492

    id 888d59ec

    id d6ee3849

    punto 5 932 ffffffff ffffffff ffffffff

    953380.34 4832909.1 695.99

    punto 5 932 ffffffff ffffffff ffffffff

    953925.959 4832598.42 669.65

    linea 5 505063 5 255 255 ffffffff ffffffff ffffffff

    954298.392 4832489.95 599.29 0

    954302.200 4832485.61 599.29 0

    954306.295 4832489.25 599.29 0

    954302.429 4832493.56 599.29 0

    954298.392 4832489.95 599.29 0

    testo 5 T5005 0 0.0000 6.0000 50 f9bda380 ffffffff ffffffff 0 PIERO

    953203.83 4833256.50

    testo 5 T5005 0 0.0000 6.0000 50 f9bda380 ffffffff ffffffff 0 CLEMENTE

    953228.61 4833256.50

    finefile







    Grazie mille in anticipo.





    --- Ultima modifica di titino2 in data 2017-10-04 14:49:29 ---

    --- Ultima modifica di titino2 in data 2017-10-04 16:23:06 ---
  • Re: Banale: IF e PyQT
    Forum >> Principianti
    Grazie a tutti...
    quando ho caricato la mia risposta non ho visto quello che mi aveva scritto Daniele aka Palmux.

    Ora provo a seguire tutti i vostri consigli e vi faccio sapere...




    Ciao..
  • Re: Banale: IF e PyQT
    Forum >> Principianti
    Grazie per la risposta...
    si hai ragione con il tuo consiglio avrei potuto risolvere se i "gruppi" avessero tutti la stessa lunghezza ma a volte sono di lunghezza diversa. (es. A1B1, A2B2, A3, A4B4, A5, B6, B9, ecc..)

    Io ho provato con la funzione string.split ma continuo ad avere problemi... vi allego il codice che come potete vedere mi da degli errori che ancora non ho superato..

    import string
    delivery=['A1B1 20160213','A1B1 20161001','B2_20160202','B2_20161010','F3_20160203']
    dely=string.split(str(delivery),"_")
    l=len(dely)
    ##print l
    list(dely)
    print type(dely)
    d=[]
    print type(d)
    for i in range(0,l,2):
        print i
        if i==0:
            d=dely
            list(d)
            print type(d)
        else:
            print type(d)
            list(d)
            print type(d)
            d.append(dely)
            print d
    print d
    Questo era il "fanta codice" che ho provato a creare per estrarre il "nome del blocco".

    Poi sto cercando di fare quello che estratto il nome del blocco mi identifica quello con la data più recente (qui mi perdo dopo 3 sec.).




    Ciao e grazie
  • Re: Banale: IF e PyQT
    Forum >> Principianti
    Ciao,
    perdona-perdonate il ritardo... nel ringraziarti-vi

    Hai ragione... funziona alla perfezione... lasciamo perdere cosa sbagliavo... diciamo che quando ci provavo era sera tardi ed ero stanco :)

    Vi chiedo nuovamente aiuto..

    Ho un oggetto(lista o tupla) cosi formato:

    a=['A3_20160817','A3_20161019','A3_20161117','A3_20161120','A5_20160917','A5_20160919','A5_20161117']

    Ecco cosa vorrei fare:

    - Vorrei estrarre da questa lista i primi caratteri fino l' "_" ed inserirli all'interno di un'altra lista.

    - Vorrei estrarre ogni gruppo(per me i gruppi sono identificati dalle cifre fino l' "_") l'oggetto più "giovane"(dopo "_" è una data). es. per il gruppo A3 --> 'A3_20161120' per il gruppo A5 --> 'A5_20161117'. Una volta identificati inserirli all'interno di una nuova lista.

    Ho provato e riprovato ma sinceramente tutte le prove e provine che ho fatto sono state un chiaro fallimento.

    Mi potete dare delle dritte? Non vi chiedo di scrivermi il codice.. quello lo voglio fare da solo... pero non so più da che parte farmi...



  • Banale: IF e PyQT
    Forum >> Principianti
    Salve a tutti.
    Ho provato a scrivere un banale script per farvi un breve esempio che vi possa far capire il mio dubbio(banale-elementare-tutto ammesso... non trattatemi troppo male...)
    Vi allego lo script poi vengo alle domande.
    nome=raw_input("Scrivi come ti chiami: ") #Stringa
    eta=raw_input("Scrivi la tua eta: ")  #Numero unicode!!!Perche se uso "input" invece che "raw_input" che mi ritorna un integer posso fare operazioni matematiche ma l"if" non mi funziona?
    ##if type(nome)<>str:
    ##    str(nome)
    ##print nome
    print type(eta)
    ##print eta+2
    
    if eta<=18: #Perche se non valuta se un intero è < o > o = ad un altro intero?????? Funziona solo con un unicode?
        print "Ciao"+" "+nome
    else:
        diff=(18-int(eta))
        print "Ci dispiace"+" "+nome+"\n"+"Per poter giocare devi essere maggiorenne"+"\n"+"Torna tra "+str(diff)+" anni"
    Domanda:
    - Perchè se uso "input", invece che "raw_input", che mi ritorna un integer posso fare operazioni matematiche ma l"if" non mi funziona? (Premetto che uso Python 2.x)
    Se volessi dare un "vestito" allo script come posso fare?
    Dettaglio meglio la mia domanda scrivendo una specie di lista dei desideri...
    Mi piacerebbe che lo script si aprisse come un file .exe e una volta "lanciato" si aprisse una maschera con due campi dove poter inserire ciò che mi viene chiesto. Tutto corredato da i classici pulsanti "Ok" per far partire il programma e "Annulla" per chiudere tutto.
    Mi sono letto la guida delle PyQt ma non ho proprio capito come poter passare alle librerie i valori delle variabili. E' spiegato molto bene come si fanno le varie maschere ma non ho proprio capito il resto che mi interessa.


    Grazie in anticipo a tutti... e scusate la banalità dei miei dilemmi.



    --- Ultima modifica di titino2 in data 2016-11-06 16:54:41 ---
  • Re: Primo programma e prime difficoltà
    Forum >> Principianti
    Claudio_F
    ti ringrazio veramente per il supporto che mi hai dato... effettivamente seguendo tutte le tue indicazioni sono riuscito a capire il problema e soprattutto a far funzionare il mio piccolo script. :ok: :) ;) :batti5:







    Ora visto che mi sono "gasato" volevo dare una vestizione al mio script e leggendo qua e la.. ho visto che molti e con molte soddisfazioni utilizzano le librerie PythonQT.

    Purtroppo questa settimana il lavoro non mi lasciato spazio per fare molte prove con il mio "amico pitone"... :sarcastic:

    Ora non c'ho speso ancora troppo tempo.. ma vi anticipo (tremate tremate :devil:) che presto avrò sicuramente altre sciocche domande da sottoporvi... :embarrassed:







    Grazie ancora a tutti per l'aiutoooooo...