Pagina 3 di 5 primaprima 1 2 3 4 5 ultimoultimo
Visualizzazione dei risultati da 21 a 30 su 45
  1. #21
    Non mi sembrava...
    I numeri sono messi (con copia e incolla) dal post all'inizio di questo thread nel file txt d'interesse da ordinare.
    Uno sotto l'altro...
    O intendi per non mettere segni a capo di mettere tutto in fila su una riga?
    Nei numeri riportati nel post all'inizio, nell'ultima riga manca il punto e virgola, ad esempio. Quello è sufficiente per non far funzionare il programma.
    Il file di input deve presentare sempre la stessa sintassi:

    numero,numero,numero;

    Puoi andare a capo ma solo dopo il ; e MAI dopo l'ultima linea
    Un altra cosa:
    Provando a cambiare int(y) con la semplice y
    il programma funge con una stortura...
    Mi ordina i valori contando solo il primo dei due in caso si tratti di un numero a due cifre e quindi
    la prima riga dell'esempio mi risulta ordinata in questo modo:
    12,31,47,7,80
    ovvero per lui... 7>12 perchè 7>1 che sarebbe la prima cifra di 12
    Quello accade perchè lui ordina dei valori di tipo stringa (str) e non intero (int). La conversione da stringa a intero (a=[int(y) for y in x]) è necessaria per poi ordinare correttamente (a.sort()).
    Presta attenzione al formato dei valori del file di input e vedi che non avrai problemi.

    Un saluto
    Rilasciata Python FTP Server library 0.5.1
    http://code.google.com/p/pyftpdlib/

    We'll be those who'll make the italian folks know how difficult can be defecating in Southern California without having the crap flying all around the house.

  2. #22
    Utente di HTML.it L'avatar di freetom
    Registrato dal
    Nov 2001
    Messaggi
    3,725

    GRAZIE

    Stasera provo subito!


  3. #23
    Utente di HTML.it L'avatar di freetom
    Registrato dal
    Nov 2001
    Messaggi
    3,725

    Dunque.. questo PYTHON mi garba molto ma mi fa anche molto impazzire :)

    Ti spiego...
    Sono riuscito a eseguire il corretto ordinamento per riga dei valori desiderati..

    Ma solo per un esempietto di 10 righe...

    Se tento di eseguire la stessa azione su un altro file (quello che mi serve) di 4000 righe ca mi da l'errore di prima ma con questa differenza... (in grassetto)

    Traceback (most recent call last):
    File "C:\ORDINAMENTO_ASC_COMB.py", line 5, in ?
    a=[int(y) for y in x]
    ValueError: invalid literal for int(): ÿþ2

    A cosa si riferisce cosa da noia.. al serpentello..?

    Grazieee


  4. #24
    Come ti ho gia detto: sono presenti caratteri imprevisti nel file di input.
    Puoi anche avere un milione di numeri ma se tutti seguono lo standard:

    numero,numero,numero;
    numero,nuemro,numero,nuemro;
    [...]

    non avrai problemi.
    Ho speso più di 1 ora per ottimizzarti il programma. In questo modo dovrebbe eliminare tutti i caratteri non validi, gli spazi e gli "a capo" di troppo. Ho fatto diverse prove e per farlo crashare ti assicuro che ti ci devi davvero impegnare. Per farti un esempio, riesce a "ripulire" processare e ordinare anche una schifezza di file di input come questo, ignorando gli standard "non validi", evitando che il programma si blocchi in seguito ad errori:
    codice:
    ###file di input:
    
    dasjol xm7,12,1,56,6;     
    9,37,4,5, 1; /()hjJ
       das
    ds
          xcmal()= KMl 
          
          
    !"$%#sdmjsklm99,143,30,2,16,5412,12;  sdajkl
                      /&TYgb)
    codice:
    ### file di output
    
    1,6,7,12,56;
    1,4,5,9,37;
    2,12,16,30,99,143,5412;
    Più di cosi non posso fare.
    Ecco il codice:

    codice:
    #!usr/bin/python
    # -*- coding: utf-8 -*-
    
    import os
    
    non_validi  = ""
    non_validi += "abcdefghijklmnopqrstuvwxyz"
    non_validi += "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
    non_validi += """àèìòù@#]\|!"£$%&/()=?^'*°§ç.:-_ """
    
    fi = open('fi.txt','r')
    fo = open('fo.txt','w')
    lista = ''
    
    # elimina caratteri non validi da fi
    for line in fi.readlines():
        for i in line:
            if (i not in non_validi):
                lista+= i
    
    temp = open('temp','w+')
    temp.write(lista)
    temp.close()
    temp = open('temp','r')
    
    a = []
    for line in temp.readlines():
        if (line != '\n'): #ignora gli 'a capo' di troppo
            x = line[:-2].split(',')
            try: a=[int(y) for y in x]
            except: print "ERR: %s" %y; os.remove('temp'); os._exit(0)
            a.sort()
            l = 0
            for i in a: l += 1
            for i in a:
                if l != 1:
                    fo.write(str(i)+',')
                else:
                    fo.write(str(i)+';')
                l -= 1
            fo.write('\n')
    os.remove('temp')
    fi.close()
    fo.close()
    Fammi sapere come va
    Rilasciata Python FTP Server library 0.5.1
    http://code.google.com/p/pyftpdlib/

    We'll be those who'll make the italian folks know how difficult can be defecating in Southern California without having the crap flying all around the house.

  5. #25
    Utente di HTML.it L'avatar di freetom
    Registrato dal
    Nov 2001
    Messaggi
    3,725

    NON HO PAROLE :)

    Comque mi da questo errore

    ERR:
    Traceback (most recent call last):
    File "D:/PROGRAMMONEINPYTHON", line 31, in ?
    except: print "ERR: %s" %y; os.remove('temp'); os._exit(0)
    OSError: [Errno 13] Permission denied: 'temp'

    Non so proprio come incerottarlo...



    GRAZIE INFINITE


  6. #26
    Utente di HTML.it L'avatar di freetom
    Registrato dal
    Nov 2001
    Messaggi
    3,725

    No scusa!!! l'errore si riferiva solo...

    All'estensione .py mancante
    MEA CULPA

    Ma comque forse non mi sono spiegato bene per cosa vorrei ottenere..

    Provo a rispiegarmi meglio..

    Io ho sto benedetto file fi.txt contenente questo:

    fileimportato=
    27,43,57,61,81;
    7,12,31,47,80;
    9,37,67,69,82;
    12,24,30,40,77;
    14,22,25,51,85;
    6,18,46,62,78;
    5,20,35,38,88;
    5,35,51,59,75;
    1,6,20,24,42;
    30,44,56,57,81;
    1,22,25,53,64;
    22,41,61,75,89;
    9,19,25,31,54;
    25,35,64,75,87;
    21,30,74,84,89;

    Il tuo MITICO PROGRAMMA per adesso me lo trasforma in questo:

    27,43,57,61,81;
    7,12,31,47,80;
    9,37,67,69,82;
    12,24,30,40,77;
    14,22,25,51,85;
    6,18,46,62,78;
    5,20,35,38,88;
    5,35,51,59,75;
    1,6,20,24,42;
    30,44,56,57,81;
    1,22,25,53,64;
    22,41,61,75,89;
    9,19,25,31,54;
    25,35,64,75,87;
    21,30,74,84,89;

    Ovvero me lo ordina se ce bisogno e mi toglie tutto cio' che non rispecchia la forma:

    numero,numero,numero,numero,numero;



    Ma a me adesso servirebbe qualcosa che mi "unisse" riga per riga le varie combinazioni separandole solo con il punto e virgola..

    Ovvero mettesse conservando i gruppi ordinati tutto in orizzontale..

    senza spazi tra l'una e l'altro...

    tipo:

    27,43,57,61,81;7,12,31,47,80;9,37,67,69,82; ecc...

    It's possible??

    ARIGRAZIE INFINITE


  7. #27
    Scusa ma nel primo post non avevi richiesto una cosa diversa?
    Non potevi dirlo subito che lo volevi cosi?
    Rilasciata Python FTP Server library 0.5.1
    http://code.google.com/p/pyftpdlib/

    We'll be those who'll make the italian folks know how difficult can be defecating in Southern California without having the crap flying all around the house.

  8. #28
    Basta commentare la quart'ultima linea mettendo un # davanti.
    codice:
    #fo.write('\n')
    Rilasciata Python FTP Server library 0.5.1
    http://code.google.com/p/pyftpdlib/

    We'll be those who'll make the italian folks know how difficult can be defecating in Southern California without having the crap flying all around the house.

  9. #29
    Utente di HTML.it L'avatar di freetom
    Registrato dal
    Nov 2001
    Messaggi
    3,725

    Scusami se non sono stato chiaro fin dall'inizio



    Credevo di esserlo stato ma non era così

    Comque...

    Se non puoi cambiare il codice sopra postato fa nulla

    Ti ringrazio infinitamente lo stesso

    Un ultima cosa ma solo se non ti è troppo complicata e dispendiosa di tempo nel farla...


    Con python (che non conosco ma mi affascina un sacco ) è possibile confrontare due file di testo e eliminare le righe eventualmente uguali per ottenere un terzo file di testo che sarebbe la "sottrazione" dei due?

    es...

    file1.txt contiene:

    A,B,C,D,E
    A,B,C,F,G

    file2.txt contiene:

    A,B,C,D,E
    A,B,C,F,G
    E,F,G,H,I

    Faccio.. con python program...

    file1-file2 e ottengo

    file3 che contiene solo:

    E,F,G,H,I che sarebbe l'unica riga in questo caso non comune ai due files esaminati...

    It's possible? :master:






    GRAZIE AMICO


  10. #30
    Utente di HTML.it L'avatar di freetom
    Registrato dal
    Nov 2001
    Messaggi
    3,725

    fatto!

    Mi segnala un errore:

    Traceback (most recent call last):
    File "D:PROGRAMMONEINPYTHON.py", line 42, in ?
    os.remove('temp')
    OSError: [Errno 13] Permission denied: 'temp'

    ma funge alla grande lo stesso !

    SEI UN MITO di pythoriano amigo!

    Ora lo imparo anche io mi affascina troppo anche questo linguaggio!!!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.