擅长:python、mysql、java
<p>正如建议的那样,您可以在每个extract变量上使用多个<code>try</code>块,也可以使用自己的自定义函数简化它,该函数为您处理<code>try</code>:</p>
<pre><code>from functools import reduce, partial
def try_funcs(cell, default, funcs):
try:
return reduce(lambda val, func: func(val), funcs, cell)
except Exception as e:
# do something with your Exception if necessary, like logging.
return default
# Usage:
AccountName = try_funcs(SoldModelInfo.cell(1,5).value, "some default str value", str)
ExpirationDate = try_funcs(SoldModelInfo.cell(1,7).value), "some default date", [xldate_to_datetime, partial(dt.datetime.strftime, '%Y-%m-%d')])
PolicyState = try_funcs(SoldModelInfo.cell(1,6).value, "some default str value", str)
</code></pre>
<p>这里我们使用<a href="https://docs.python.org/3/library/functools.html#functools.reduce" rel="nofollow noreferrer">^{<cd3>}</a>重复多个函数,并将<a href="https://docs.python.org/3/library/functools.html#functools.partial" rel="nofollow noreferrer">^{<cd4>}</a>作为带参数的冻结函数传递。在</p>
<p>这可以帮助您的代码看起来整洁,而不会让大量的<code>try</code>块弄乱。但是,更好、更明确的方法是处理您预期可能会出错的字段。在</p>