python的“.format”函数

2024-03-28 22:15:55 发布

您现在位置:Python中文网/ 问答频道 /正文

最近,我发现''.format函数非常有用,因为与%格式相比,它可以大大提高可读性。 尝试实现简单的字符串格式:

data = {'year':2012, 'month':'april', 'location': 'q2dm1'}

year = 2012
month = 'april'
location = 'q2dm1'
a = "year: {year}, month: {month}, location: {location}"
print a.format(data)
print a.format(year=year, month=month, location=location)
print a.format(year, month, location)

虽然前两张照片的格式和我预期的一样(是的,something=something看起来很难看,但这只是一个例子),但最后一张会提高KeyError: 'year'。 python中是否有创建dictionary的技巧,以便它自动填充键和值,例如somefunc(year, month, location)将输出{'year':year, 'month': month, 'location': location}

我对python还很陌生,找不到关于这个主题的任何信息,但是这样的技巧可以极大地改进和缩小我当前的代码。

提前谢谢,请原谅我的英语。


Tags: 函数字符串format技巧data格式locationyear
3条回答

第一个print应该是

print a.format(**data)

另外,如果你正在寻找一些捷径,你可以写一个像,没有大的区别。

def trans(year, month, location):
    return dict(year=year, month=month, location=location)
data = {'year':2012, 'month':'april', 'location': 'q2dm1'}
a = "year: {year}, month: {month}, location: {location}"

print a.format(**data)

…是你要找的。它在功能上与执行.format(year=data['year'], ...)或您给出的其他示例完全相同。

双星号的东西很难找到,所以通常被称为“夸尔格”。这是一张good SO question on this syntax

您可以使用dict()可调用:

dict(year=yeah, month=month, location=location)

当传递关键字参数时,它会创建一个dict,其中包含指定为kwargs的元素。

如果不想指定参数名,请使用.format()的位置样式:

>>> a = 'year {0} month {1} location {2}'
>>> print a.format(2012, 'april', 'abcd')
year 2012 month april location abcd

但是,如果您试图做类似于^{} in PHP所做的事情(创建一个将变量名映射到其值的dict映射,而不单独指定名称和变量),请不要这样做。这只会导致难看的不可读代码,而且无论如何都需要讨厌的黑客操作。

相关问题 更多 >