PDA

Visualizza la versione completa : [PYTHON] Rimuovere spazi da un file di testo


freetom
09-12-2005, 23:17
di questo tipo:

fileimportato=
2,14,48,63,77;
9,33,53,54,60;
34,55,61,66,89;
12,45,48,60,71;
10,25,65,76,85;
7,11,25,52,73;
21,24,40,71,78;
24,49,78,87,88;
33,45,60,66,70;
18,22,52,76,83;
14,18,44,59,64;
5,19,56,82,83;
32,35,45,70,88&

io vorrei trasformare con apposito script in automatico il contenuto di questo file in:

fileimportato=2,14,48,63,77;9,33,53,54,60;34,55,61 ,66,89;
12,45,48,60,71;10,25,65,76,85;7,11,25,52,73;21,24, 40,71,78;
24,49,78,87,88;33,45,60,66,70;18,22,52,76,83;14,18 ,44,59,64;
5,19,56,82,83;32,35,45,70,88&

It's possible with PYTHON SCRIPT? Altrimenti si accettano tutte le altre possibili soluzioni per il medesimo risultato.. :D

Grazie a tutti/e

:ciauz:

unomichisiada
10-12-2005, 01:02
#include <stdio.h>
#include <stdlib.h>
#define BASE_BUFF_CAPACITY 80; //lunghezza base del buffer di lettura

int main(int argc,char* argv[])
{
//dichiarazioni
int buff_size = BASE_BUFF_CAPACITY;
char* buff = (char*)malloc(buff_size);
int ch,i = 0;
FILE* fp = NULL;

//controllo parameri in input al programma
if(argc != 2)
{
printf("Error: wrong parameters number!");
return -1;
}

//apertura in lettura del file
fp = fopen(argv[1], "r");
if( fp == NULL )
{
printf("Error: problem while opening the file %s!", argv[1]);
return -1;
}

//lettura in un buffer di caratteri del contenuto del file
//escludendo gli accapo ('\n')
ch = fgetc(fp);
while(ch != EOF)
{
if(ch != '\n') //saltiamo gli accapo
{
buff[i] = ch;
i++;
}
//superati gli 80 caratteri estendiamo il buffer
if(i == buff_size)
buff_size += BASE_BUFF_CAPACITY;
buff = (char*)realloc(buff,buff_size);
ch = fgetc(fp);
}
//aggiungiamo il terminatore di fine stringa
buff[i] = '\0';

//ripertura del file in sola scrittura (cancella il contenuto precedente)
fclose(fp);
fp = fopen(argv[1], "w");
if( fp == NULL )
{
printf("Error: problem while opening the file %s!", argv[1]);
return -1;
}

//scrittura del buffer sul file
for(i =0 ; buff[i] != '\0'; i++)
fputc(buff[i],fp);

//rilascio risorse di memoria
free(buff);
return 0;
}

Un semplice programmino C, hai solo bisogno di un compilatore come Minggw (o gcc sotto linux) e dovresti ottenere senza problemi l'eseguibile. Poi lo richiami con nomeprog.exe nome_file da prompt.

unomichisiada
10-12-2005, 01:08

Fox82
10-12-2005, 01:51
Un po pi veloce... :D



fi = open('nomefile.txt', 'r')
fo.open('nomefile2.txt', 'w')
fo.write(fo.read().replace('\n', ''))
fo.close()
fi.close()


Ciao :ciauz:

freetom
10-12-2005, 12:08
Traceback (most recent call last):
File "D:\PERtoglieregliacapo.py", line 2, in ?
fo.open('nomefile2.txt', 'w')
AttributeError: 'file' object has no attribute 'open'

A te il tuo script che hai postato funge? :messner: :dh: :fighet:

GRAZIE COMQUE! :ciauz:

unomichisiada
10-12-2005, 12:10
Originariamente inviato da Fox82
Un po pi veloce... :D



fi = open('nomefile.txt', 'r')
fo.open('nomefile2.txt', 'w')
fo.write(fo.read().replace('\n', ''))
fo.close()
fi.close()


Ciao :ciauz:
Indubbiamente!Volendo avrei potuto sriverglielo in java, ci avrei messo di meno ed avrei raggiunto una compattezza non lontana dal tuo scripti py. Tuttavia con py e java ci vuole
il runtime mentre un exe in c una volta compilato e li pronto.Certo se si deve fare una cosa pi complessa farlo in c diventa troppo laborioso,ad esempio il problema dello stesso autore di questo post di ordinare un file di interi riga per riga diventava gi ababstanza complesso da gestire perch il c fornisce un numero esiguo di strumenti di base per fare cose comuni come manipolare stringhe o ordinare array

freetom
10-12-2005, 12:35
Minggw

Dove lo posso trovare e soprattutto gratisse? :D

Grazie!

:ciauz:

unomichisiada
10-12-2005, 12:39
Originariamente inviato da freetom
Minggw

Dove lo posso trovare e soprattutto gratisse? :D

Grazie!

:ciauz:
E' un porting di gcc (il compilatore classico sotto linux) per windows.Si lo puoi trovare aggratis, lo stesso usato da dev-c++ o anche MingwSudio, perci se hai DevC++ hai anche Mingw.Comunque quel codice dovrebbe compilare senza problemi in praticamente qualunque compilatore c,se ne hai uno diverso da mingw usa quello,in ogni caso se ti da errori postameli.

Fox82
10-12-2005, 14:14
Originariamente inviato da freetom
Traceback (most recent call last):
File "D:\PERtoglieregliacapo.py", line 2, in ?
fo.open('nomefile2.txt', 'w')
AttributeError: 'file' object has no attribute 'open'

A te il tuo script che hai postato funge? :messner: :dh: :fighet:

GRAZIE COMQUE! :ciauz:

Scusa, troppa fretta :dh:



fi = open('nomefile.txt', 'r')
fo = open('nomefile2.txt', 'w')
fo.write(fo.read().replace('\n', ''))
fo.close()
fi.close()

freetom
10-12-2005, 17:34
Traceback (most recent call last):
File "D:\PERtoglieregliacapo2.py", line 3, in ?
fo.write(fo.read().replace('\n', ''))
IOError: [Errno 9] Bad file descriptor

:fighet:

:ciauz:

Loading