У меня есть фрагмент кода, который ищет 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"
.