客观的:我有几行代码,每行代码都能够产生相同类型的错误,并保证相同类型的响应。如何防止 try- except 块出现“不要重复”问题。
背景:
我使用 ReGex 从文本文件中抓取格式不良的数据,并将其输入到自定义对象的字段中。该代码工作得很好,除非该字段留空,在这种情况下它会引发错误。
我在 try- except 块中处理这个错误。如果出现错误,请在对象字段中插入空格(即“”)。
问题是它把易于阅读的、漂亮的 Python 代码变成了一堆乱七八糟的 try- except 块,每个块都做完全相同的事情。这是“不要重复自己”(又名 DRY)的违规行为。
代码:
Before:
sample.thickness = find_field('Thickness', sample_datum)[0]
sample.max_tension = find_field('Maximum Load', sample_datum)[0]
sample.max_length = find_field('Maximum Extension', sample_datum)[0]
sample.test_type = sample_test
After:
try:
sample.thickness = find_field('Thickness', sample_datum)[0]
except:
sample.thickness = ''
try:
sample.max_tension = find_field('Maximum Load', sample_datum)[0]
except:
sample.max_tension = ''
try:
sample.max_length = find_field('Maximum Extension', sample_datum)[0]
except:
sample.max_length = ''
try:
sample.test_type = sample_test
except:
sample.test_type = ''
我需要的:
有Pythonic的方式来写这个吗?在某些块中,我可以判断这些行中是否存在索引超出范围错误(表明该字段为空,并且 ReGex 未能返回任何内容),在示例字段中插入一个空白。