Prev: Python 3 minor irritation
Next: come and join www.pakdub.com where u can find friends, classifieds, games, music albums, events, blogs, chatrooms, video songs and lot more.... for free
From: mf on 3 Feb 2010 21:33 I'm translating a db from english to spanish with the Google translator API. The problem is when a TranslationError occurs(usually because of connection problems). I can except the first one, but I don't know how to except again. I "solved" the problem by saving temp db's and then joining them, but it must be a pythonic way to do it. Here's a snippet from the code: english_field = oldDb[i].fieldData[0] #oldDb is a db filled with english words try: spanish_field = translate(english_field, lang_to='es', lang_from='en') except TranslationError: spanish_field = translate(english_field, lang_to='es', lang_from='en') #Then I save the fields into a new db
From: Alf P. Steinbach on 3 Feb 2010 22:00 * mf: > I'm translating a db from english to spanish with the Google > translator API. The problem is when a TranslationError occurs(usually > because of connection problems). I can > except the first one, but I don't know how to except again. I "solved" > the problem by saving temp db's and then joining them, but it must be > a pythonic way to do it. > > Here's a snippet from the code: > > english_field = oldDb[i].fieldData[0] #oldDb is a db filled > with english words Is this actual code? I may be mistaken, but at least in Python 3.x it seems there should be a comma between each 'with' expression. And there should certainly be a colon at the end. It's best to copy and paste real code. Made-up code can just be misleading for those who'd like to help. > try: > spanish_field = translate(english_field, lang_to='es', > lang_from='en') > except TranslationError: > spanish_field = translate(english_field, lang_to='es', > lang_from='en') > > #Then I save the fields into a new db Possibly I'm misunderstanding what you mean, but have you thought of using a loop? Cheers & hth., - Alf
From: MRAB on 3 Feb 2010 22:17 Alf P. Steinbach wrote: > * mf: >> I'm translating a db from english to spanish with the Google >> translator API. The problem is when a TranslationError occurs(usually >> because of connection problems). I can >> except the first one, but I don't know how to except again. I "solved" >> the problem by saving temp db's and then joining them, but it must be >> a pythonic way to do it. >> >> Here's a snippet from the code: >> >> english_field = oldDb[i].fieldData[0] #oldDb is a db filled >> with english words > > Is this actual code? I may be mistaken, but at least in Python 3.x it > seems there should be a comma between each 'with' expression. And there > should certainly be a colon at the end. > > It's best to copy and paste real code. > > Made-up code can just be misleading for those who'd like to help. > It looks to me like the line wrapped during posting, ie the 'with' part belongs to the comment. > >> try: >> spanish_field = translate(english_field, lang_to='es', >> lang_from='en') >> except TranslationError: >> spanish_field = translate(english_field, lang_to='es', >> lang_from='en') >> >> #Then I save the fields into a new db > > Possibly I'm misunderstanding what you mean, but have you thought of > using a loop? > In other words: for attempt in range(2): try: spanish_field = translate(english_field, lang_to='es', lang_from='en') break except TranslationError: pass else: # Didn't break out of the loop, therefore not successful. print "Translation failed"
From: Alf P. Steinbach on 3 Feb 2010 22:44 * MRAB: > Alf P. Steinbach wrote: >> * mf: >>> I'm translating a db from english to spanish with the Google >>> translator API. The problem is when a TranslationError occurs(usually >>> because of connection problems). I can >>> except the first one, but I don't know how to except again. I "solved" >>> the problem by saving temp db's and then joining them, but it must be >>> a pythonic way to do it. >>> >>> Here's a snippet from the code: >>> >>> english_field = oldDb[i].fieldData[0] #oldDb is a db filled >>> with english words >> >> Is this actual code? I may be mistaken, but at least in Python 3.x it >> seems there should be a comma between each 'with' expression. And >> there should certainly be a colon at the end. >> >> It's best to copy and paste real code. >> >> Made-up code can just be misleading for those who'd like to help. >> > It looks to me like the line wrapped during posting, ie the 'with' part > belongs to the comment. *banging me head* thx What one gets from conditioning oneself to ignore comments in code. >>> try: >>> spanish_field = translate(english_field, lang_to='es', >>> lang_from='en') >>> except TranslationError: >>> spanish_field = translate(english_field, lang_to='es', >>> lang_from='en') >>> >>> #Then I save the fields into a new db >> >> Possibly I'm misunderstanding what you mean, but have you thought of >> using a loop? >> > In other words: > > for attempt in range(2): > try: > spanish_field = translate(english_field, lang_to='es', > lang_from='en') > break > except TranslationError: > pass > else: > # Didn't break out of the loop, therefore not successful. > print "Translation failed" Cheers, - Alf
From: Jean-Michel Pichavant on 4 Feb 2010 07:59
MRAB wrote: > In other words: > > for attempt in range(2): > try: > spanish_field = translate(english_field, lang_to='es', > lang_from='en') > break > except TranslationError: > pass > else: > # Didn't break out of the loop, therefore not successful. > print "Translation failed" What the hell is this 'for else' loop !! :D First time I see this statement for years. I'd never thought I'd still learn something that basic. My first impression is that the mechansim is not that obvious. MRAB's need for a comment tends to confirm this. I'll try to remember that anyway. Nice addition. JM |