On 23 Feb 2007 19:13:10 +0100, Neil Cerutti <[EMAIL PROTECTED]> wrote:
>On 2007-02-23, David C Ullrich <[EMAIL PROTECTED]> wrote: >> Is there a csvlib out there somewhere? >> >> And/or does anyone see any problems with >> the code below? >> >> [...] >> >> (Um: Believe it or not I'm _still_ using python 1.5.7. So >> comments about iterators, list comprehensions, string methods, >> etc are irrelevent. Comments about errors in the algorithm >> would be great. Thanks.) > >Two member functions of indexedstring are not used: next and >lookahead. __len__ and __getitem__ appear to serve no real >purpose. Hey, thanks! I didn't realize that using an object with methods that were never called could cause an algorithm to fail... shows how much I know. (Seriously, all I really wanted to know was whether anyone noticed something I overlooked, so that parsecsvline(csvline(fields)) might under some condition not come out the same as fields...) >> def parsecsvline(csvline): >> """Inverts csvline(). Assumes csvline is valid, ie >> is something as returned by csvline(); output undefined >> if csvline is in invalid format""" >> >> s = indexedstring(csvline) >> res = [] >> >> while not s.eos(): >> res.append(s.getfield()) >> >> return res > >You'll be happy to know that iterators and list comprehensions >will make your code better after you upgrade. ;-) Uh, thanks again. You're right, knowing that makes me so happy I could just burst. >In the meantime, I think your (relative lack of) error handling >is OK. GIGO, as they say (garbage in, garbage out). _I_ don't think it's ok. But (i) the code I posted was not supposed to be the final version! It was a preliminary version, posted hoping that someone would notice any errors in the _algorithm_ that existed. (ii) in the intended application parsecsvline will only be applied to the output of csvline, so if the former is indeed a left inverse of the latter there should be no error unless something else has already gone wrong elsewhere. Not that that makes it ok... ************************ David C. Ullrich -- http://mail.python.org/mailman/listinfo/python-list