У меня есть фрагмент кода, который ищет AutoCAD для текстовых полей, которые содержат определенные ключевые слова (например, "overall_weight" в этом случае) и заменяет его значением из словаря. Однако иногда ключевому слову слова присваивается пустая строка, а иногда ключ не существует вообще. В этих случаях ключевые слова "overall_weight" следует заменить на "N/A". Мне было интересно, есть ли более питонический способ объединить исключение KeyError, а else - перейти к nObject.TextString = "N/A", чтобы его не набирали дважды.
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"
Изменить: для уточнения для будущих посетителей, есть только 3 случая, о которых мне нужно позаботиться, и правильный ответ позаботится обо всех трех случаях без каких-либо дополнительных дополнений.
-
dict[key]существует и указывает на непустую строку.TextStringзаменено значением, назначеннымdict[key]. -
dict[key]существует и указывает на пустую строку.TextStringзаменен на"N/A". -
dict[key]не существует.TextStringзаменен на"N/A".