这段代码是什么:%(var)s? Python可能吗?

时间:2012-11-29 19:54:37

标签: python

我使用的网站后端有一个选项,允许我在为产品下订单时自定义CSV文件中发送的数据。有两列,左列是您分配标题的位置,右列是您输入变量的位置。现有变量的语法类似于%(order.random_variable)s%(item.random_variable)s这类似于Python中的字符串占位符%s,我相信它是相关的,如果不相同,但我不太明白语法。有人可以详细说明这段代码的用途吗?

哦,为了记录,我不打算进入并立即改变变量。只是为我的研究寻找一个好的起点。

2 个答案:

答案 0 :(得分:5)

这类似于%s。括号内的部分是可选的。

  

唯一的区别是,对于第一个,您的值必须是a   具有格式字符串指定的项目数的元组,   对于第二个,它必须是一个映射对象(例如,   字典)

明确列在String formatting documentation中: -

  

转换说明符包含两个或多个字符并具有   以下组件,必须按此顺序出现:

     
      
  1. '%'字符,用于标记说明符的开头。
  2.   
  3. 映射键(可选),由带括号的字符序列组成(for   例如,(somename))   ..还有一些
  4.   

另外: -

  

当右参数是字典(或其他映射类型)时,则   字符串中的格式必须包含带括号的映射键   在'%'字符后立即插入该字典。该   映射键从映射

中选择要格式化的值

文档中的一个示例: -

>>> 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