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