.join()一直引用字典值

2024-10-04 05:26:16 发布

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

我正在使用python3.4,并组装一个url来请求json对象。但是我在使用.join()函数添加键:值对从字典到字符串:

params = {'name.first_lower' : 'characterName'}

print("/".join("{!s}={!r}".format(key,val) for (key, val) in params.items())

我需要的是它归还这个:

name.first_lower=characterName

但我得到的是:

name.first_lower='characterName'

为什么.join()或.format()从dict中给我单引号的值?你知道吗


Tags: 对象key函数字符串namejsonformaturl
2条回答

!r格式代码调用对象的^{} method,它会自动添加引号。您想使用!s格式代码,它调用^{}方法:

>>> params = {'name.first_lower' : 'characterName'}
>>> print("/".join("{!s}={!s}".format(key,val) for (key, val) in params.items()))
name.first_lower=characterName
>>>

但是请注意,显式写入!s是不必要的,因为它是默认格式代码:

>>> print("/".join("{}={}".format(key,val) for (key, val) in params.items()))
name.first_lower=characterName
>>>

这与join()方法无关,而是与format方法有关。 您正在告诉他使用!r格式说明符执行此操作。使用!s或不使用:

In [1]: '{} = {}'.format('name.first_lower', 'characterName')
Out[1]: 'name.first_lower = characterName'
In [2]: '{!s} = {!s}'.format('name.first_lower', 'characterName')
Out[2]: 'name.first_lower = characterName'

考虑阅读Format Specification Mini-Language来学习str.format的所有功能。你知道吗

相关问题 更多 >