我使用的网站后端有一个选项,允许我在为产品下订单时自定义CSV文件中发送的数据。有两列,左列是您分配标题的位置,右列是您输入变量的位置。现有变量的语法类似于%(order.random_variable)s
或%(item.random_variable)s
这类似于Python中的字符串占位符%s
,我相信它是相关的,如果不相同,但我不太明白语法。有人可以详细说明这段代码的用途吗?
哦,为了记录,我不打算进入并立即改变变量。只是为我的研究寻找一个好的起点。
答案 0 :(得分:5)
这类似于%s
。括号内的部分是可选的。
唯一的区别是,对于第一个,您的值必须是a 具有格式字符串指定的项目数的元组, 对于第二个,它必须是一个映射对象(例如, 字典)
明确列在String formatting documentation中: -
转换说明符包含两个或多个字符并具有 以下组件,必须按此顺序出现:
- '%'字符,用于标记说明符的开头。
- 映射键(可选),由带括号的字符序列组成(for 例如,(somename)) ..还有一些
醇>
另外: -
当右参数是字典(或其他映射类型)时,则 字符串中的格式必须包含带括号的映射键 在'%'字符后立即插入该字典。该 映射键从映射
中选择要格式化的值
文档中的一个示例: -
>>> print '%(language)s has %(number)03d quote types.' % \
... {"language": "Python", "number": 2}
Python has 002 quote types.
因此,()
之后和%
之前s
内的文字是字典中的key
。
答案 1 :(得分:3)
是的,这与%s类似。 ()中的部分引用了python dict的一个键。例如:
mydict = {'yay':'boo'}
print '%(yay)s'%mydict
# boo