gpt4 book ai didi

python - python中的字符串格式化

转载 作者:太空狗 更新时间:2023-10-30 00:51:58 24 4
gpt4 key购买 nike

最近我一直在做很多基于音乐的编程,因此发现自己经常做这种事情来处理一些歌曲中丢失的元数据:

default = {'title': 'Unknown title', 'artist': 'unknown Artist'}
default.update(song)
print '{title} - {artist}'.format(**default)

有没有更简洁的方法来做到这一点?我尝试像这样重写 __missing__ 但丢失的键仍然抛出 KeyError:

class Song(dict):
# dictionary with some nice stuff to make it nicer

def __missing__(self, key):
return 'Unknown {key}'.format(key = key)

编辑:抱歉我应该说得更清楚,基本上以下必须有效。

s = Song()
print '{notAKey}'.format(s)

一些人指出 ** 不是必需的。

编辑 2:我已经“解决”了我的问题,至少令我满意。这是否更清洁还有待商榷,但它对我有用。

from string import Formatter

class DefaultFormatter(Formatter):

def get_value(self, key, args, kwargs):
# Try standard formatting, then return 'unknown key'

try:
return Formatter.get_value(self, key, args, kwargs)
except KeyError:
return kwargs.get(key, 'Unknown {0}'.format(key))

class Song(dict):

def format(self, formatString):
# Convenience method, create a DefaultFormatter and use it

f = DefaultFormatter()
return f.format(formatString, **self)

所以下面会返回 'Unknown notAKey'

k = Song()
print k.format('{notAKey}')

最佳答案

执行摘要:将歌曲封装在一个类中。

在我看来,歌曲是代码中的主要数据类型,值得用专门的类来表示它。一定要使用类内部的字典来存储数据,但要尝试移动到比字典更高的抽象级别。

您的目标应该是让此类提供支持您对歌曲执行的操作所需的所有服务。将所有格式代码放在类中,这样它就不会分散在使用歌曲项目的代码中。事实上,您会发现各种各样的操作都想成为此类的方法。

格式化的实现,写在一个地方,再啰嗦一点也没关系。

关于python - python中的字符串格式化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7126803/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com