【发布时间】:2018-12-26 13:18:13
【问题描述】:
我有以下 TOML:
[gps]
measurement = "gps"
tags = ["lat", "lon", "alt"]
limit = 10
在 Python 中翻译成以下字典:
{
"gps": {
"measurement": "gps",
"tags": [ "lat", "lon", "alt"],
"limit": 10
}
我有一个类,我希望创建一个成员函数read_gps,如下所示:
- 从上面的字典中获取
**kwargs - 目前,只需打印以下字符串:
select "lat", "lon", "alt", from "gps" limit 10
代码
class dbClass:
def __init__(self, db=None, **kwargs):
self.kwargs = kwargs # this kwargs is different from the above kwargs
# do some initialization stuff here
def read_gps(self, **kwargs):
# pass the above mentioned dict here
# instance_dbClass.read_gps(gps_dict)
_data = kwargs
_tags = kwargs.get('tags')
print('select "{}","{}","{}" from "{}" limit {}'.format(*_tags,
_data.get('measurement'),
_data.get('limit'))
)
但我收到以下错误:
SyntaxError: only named arguments may follow *expression
相反,如果我删除measurement 和limit,它会正常工作。
实现此目的的 Python 方法是什么?我应该创建两个不同的字符串,然后最后将它们连接起来吗?
试用
query = """
select "{}", "{}", "{}" from "{}" limit {}
""".format(_tags[0], _tags[1], _tags[2], _data.get('measurement'),
_data.get('limit'))
print(query)
但是它有一种方法可以使用 * 解包 .format() 中的元组以及其他值
【问题讨论】:
-
对我来说很好用。
-
您是指
*吗? -
是的,你的 python 版本是什么? 3.6 ?
-
我使用的是 3.4.3
标签: python python-3.x string