[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: aiuto per script



Il giorno dom, 05-09-2004 alle 17:46 +0200, Ottavio Campana ha scritto:
> Supponete di avere un file cvs con delle righe fatte così:
> 
> 44&52,777359&15,967115&48,354073&16,217337&36,221742&15,562759&22,994321&20,403053\\
> 
> come fareste per fare in modo che per ogni valore, escluso quello della 
> prima colonna che è un indice, vengano tenuti due numeri dopo la virgola?
> 
> Vorrei che diventasse così:
> 
> 44&52,77&15,96&48,35&16,21&36,22&15,56&22,99&20,40 \\

sono sicuro che si possa fare in bash chiamando awk, ma oggi sono così
pigro che uso il python. chiama lo script così: "python zot.py
nome_file" e lui butta il risultato su stdout.

import sys

for l in open(sys.argv[1]):
    parts = l[:-3].split('&')
    toks  = ["%.2f" % float(x.replace(',','.')) for x in parts[1:]]
    toks.insert(0, parts[0])
    sys.stdout.write(' & '.join(toks) + ' \\\\\n')


-- 
Federico Di Gregorio                         http://people.initd.org/fog
Debian GNU/Linux Developer                                fog@debian.org
INIT.D Developer                                           fog@initd.org
              All programmers are optimists. -- Frederick P. Brooks, Jr.

Attachment: signature.asc
Description: Questa parte del messaggio =?ISO-8859-1?Q?=E8?= firmata


Reply to: