Pythonでは、None
や存在しないフィールドを適切にフォーマットする方法があります。以下にその方法を示します。
import string
class PartialFormatter(string.Formatter):
def __init__(self, missing='~~', bad_fmt='!!'):
self.missing, self.bad_fmt = missing, bad_fmt
def get_field(self, field_name, args, kwargs):
try:
val = super(PartialFormatter, self).get_field(field_name, args, kwargs)
except (KeyError, AttributeError):
val = None, field_name
return val
def format_field(self, value, spec):
if value == None:
return self.missing
try:
return super(PartialFormatter, self).format_field(value, spec)
except ValueError:
if self.bad_fmt is not None:
return self.bad_fmt
else:
raise
fmt = PartialFormatter()
data = {'n': 3, 'k': 3.141594, 'p': {'a': '7', 'b': 8}}
print(fmt.format('{n}, {k:.2f}, {p[a]}, {p[b]}', **data)) # 3, 3.14, 7, 8
del data['k']
data['p']['b'] = None
print(fmt.format('{n}, {k:.2f}, {p[a]:.2f}, {p[b]}', **data)) # 3, ~~, !!, ~~
このコードは、None
や存在しないフィールドを適切にフォーマットするためのクラスPartialFormatter
を定義しています。このクラスは、None
の場合には~~
を、不適切なフォーマットの場合には!!
を出力します。
このように、PythonではNone
や存在しないフィールドを適切にフォーマットするための方法が提供されています。これにより、エラーメッセージを出力することなく、None
や存在しないフィールドを適切に扱うことが可能になります。