Repeat an exception

M

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.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
 
A

Alf P. Steinbach

* 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.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
 
M

MRAB

Alf said:
* 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.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.
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"
 
A

Alf P. Steinbach

* MRAB:
Alf said:
* 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.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.

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
 
J

Jean-Michel Pichavant

MRAB said:
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
 
M

MRAB

Jean-Michel Pichavant said:
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.
The comment is there for the OP. _I_ don't need it! :)
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
474,176
Messages
2,570,950
Members
47,503
Latest member
supremedee

Latest Threads

Top