PDA

Visualizza la versione completa : [PYTHON] Modificare un file di testo


cccicccio
26-12-2007, 13:43
ho un file di testo nelle cui righe ci sono una serie di coordinate espresse in millimetri del tipo:
x34 y57 z23
x34 y67 z89
...
a me servirebbe avere queste coordinate espresse in pollici.
Poichè il file di testo è lungo vorrei creare un programmino che faccia la conversione automaticamente creando un nuovo file di testo in cui tutte le coordinate siano state preventivamente convertite.
Siccome non ho esperienza con le stringhe accetto qualsiasi aiuto su come operare.

GreyFox86
26-12-2007, 17:50
Premetto che sto studiando da poco python e quindi probabilmente ci saranno forme migliori per scriverlo.
Ad ogni modo, io farei una cosa simile a questa (magari un po' più ordinata, questa è una bozza):


from re import findall
input_file = open("un_file", "r")
lines = input_file.readlines()
input_file.close()
tot=[]
fattore=1234 #sostituisci con fattore di conversione appropriato
for line in lines:
curr=findall('[-+]?[0-9]+\.?[0-9]*', line)
curr=map(lambda n: float(n)*fattore, curr)
tot.append(curr)
del curr, lines, input_file
in tot ora hai un array di array di valori, basta scriverli su file o su standard output.

:ciauz:

cccicccio
26-12-2007, 20:23
In realtà oltre alle coordinate ci sono righe in cui sono presenti
altre informazioni.
Porto un esempio concreto:
il testo

g1 x1.724638 y-1.012731
g2 r1.997999 x1.613302 y-1.178668
r1.996000 x1.486083 y-1.332506
r1.994000 x1.344282 y-1.472733


dovrebbe diventare:
g1 x0.06789893 y-0.03987118
g2 r0.07866114 x0.06351564 y-0.04640411
r0.07858244 x0.05850703 y-0.05246071
r0.0785037 x0.05292433 y-0.05798144

billiejoex
27-12-2007, 01:03
ho un file di testo nelle cui righe ci sono una serie di coordinate espresse in millimetri del tipo:
x34 y57 z23
x34 y67 z89
...
a me servirebbe avere queste coordinate espresse in pollici.
Poichè il file di testo è lungo vorrei creare un programmino che faccia la conversione automaticamente creando un nuovo file di testo in cui tutte le coordinate siano state preventivamente convertite.
Siccome non ho esperienza con le stringhe accetto qualsiasi aiuto su come operare.

Con open() apri il file, con read() / readlines() lo leggi e con stringa.split(' ') tiri fuori i valori che ti interessano.
Se la logica è più complessa (es: oltre agli spazi sono implicate altre condizioni o regole) potresti aver bisogno delle regular expression.
Insomma. Alla tua domanda non si può rispondere in un modo preciso.
Se hai un problema in particolare ti si può aiutare, altrimenti il discorso è veramente troppo generico.

Prova a far vedere quello che hai scritto finora.

cccicccio
27-12-2007, 14:06
grazie tante!!!!
sono riuscito a risolvere il problema

Loading