J'ai un morceau de code qui effectue des recherches sur AutoCAD pour les zones de texte qui contiennent certains mots-clés (par exemple. "overall_weight"
dans ce cas) et la remplace par une valeur à partir d'un dictionnaire. Parfois, cependant, la clé de dictionnaire est affecté à une chaîne vide et parfois, la clé n'existe pas tout à fait. Dans ces cas, l' "overall_weight"
mots-clés doivent être remplacés par "N/A"
. Je me demandais si il y avait une plus pythonic moyen de combiner l' KeyError
d'exception et l' else
à la fois aller à l' nObject.TextString = "N/A"
donc ce n'est pas tapé deux fois.
if nObject.TextString == "overall_weight":
try:
if self.var.jobDetails["Overall Weight"]:
nObject.TextString = self.var.jobDetails["Overall Weight"]
else:
nObject.TextString = "N/A"
except KeyError:
nObject.TextString = "N/A"
Edit: Pour les précisions pour les futurs visiteurs, il y a seulement 3 cas, j'ai besoin de prendre soin de, et la réponse correcte prend soin de tous les 3 cas, sans rembourrage supplémentaire.
dict[key]
existe et points d'une chaîne non vide.TextString
remplacé par la valeur attribuée à l'dict[key]
.dict[key]
existe et pointe vers une chaîne vide.TextString
remplacé par"N/A"
.dict[key]
n'existe pas.TextString
remplacé par"N/A"
.