On Feb 8, 3:26 pm, Bruno Desthuilliers <[EMAIL PROTECTED]> wrote: > Shawn Milo a écrit : > > > > > To the list: > > > I have come up with something that's working fine. However, I'm fairly > > new to Python, so I'd really appreciate any suggestions on how this > > can be made more Pythonic. > > > Thanks, > > Shawn > > > Okay, here's what I have come up with: > > > #! /usr/bin/python > > > import sys > > import re > > > month > > ={'JAN':1,'FEB':2,'MAR':3,'APR':4,'MAY':5,'JUN':6,'JUL':7,'AUG':8,'SEP':9,'OCT':10,'NOV':11,'DEC':12} > > > infile=file('TVA-0316','r') > > outfile=file('tmp.out','w') > > > def formatDatePart(x): > > "take a number and transform it into a two-character string, > > zero padded" > > x = str(x) > > while len(x) < 2: > > x = "0" + x > > return x > > x = "%02d" % x > > > regex = re.compile(r",\d{2}/[A-Z]{3}/\d{4},") > > regexps are not really pythonic - we tend to use them only when we have > no better option. When it comes to parsing CSV files and/or dates, we do > have better solution : the csv module and the datetime module.... > > > for line in infile: > > matches = regex.findall(line) > > for someDate in matches: > > > dayNum = formatDatePart(someDate[1:3]) > > monthNum = formatDatePart(month[someDate[4:7]]) > > yearNum = formatDatePart(someDate[8:12]) > > > newDate = ",%s-%s-%s," % (yearNum,monthNum,dayNum) > > line = line.replace(someDate, newDate) > > outfile.writelines(line) > > > infile.close > > outfile.close > > I wonder why some of us took time to answer your first question. You > obviously forgot to read these answers.
No offense - but the fact that 're' module is available, doesn't that mean we can use it? (Pythonic or not - not sure what is really pythonic at this stage of learning...) Like Perl, I'm sure there are more than one way to solve problems in Python. I appreciate everyone's feedback - I definitely got more than expected, but it feels comforting that people do care about writing better codes! :) -- http://mail.python.org/mailman/listinfo/python-list