这是使用字符串插值运算符的另一个选项%
:
class DataDict(dict):
def __missing__(self, key):
return ''
my_csv = '%(first)s,%(middle)s,%(last)s'
print my_csv % DataDict(first='John', last='Doe') # John,,Doe
或者,如果您更喜欢使用更现代的str.format()
方法,以下方法也可以使用,但在某种意义上不太自动化,因为您将提前明确定义每个可能的占位符(尽管如果需要,您可以DataDict.placeholders
即时修改):
class DataDict(dict):
placeholders = 'first', 'middle', 'last'
default_value = ''
def __init__(self, *args, **kwargs):
self.update(dict.fromkeys(self.placeholders, self.default_value))
dict.__init__(self, *args, **kwargs)
my_csv = '{first},{middle},{last}'
print(my_csv.format(**DataDict(first='John', last='Doe'))) # John,,Doe