2

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

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

4

2 回答 2

6

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

唯一的区别是,对于第一个,您的值必须是一个与格式字符串指定的项目数完全相同的元组,而对于第二个,它必须是单个映射对象(例如,字典)

它清楚地列在字符串格式文档中:-

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

  1. '%' 字符,标记说明符的开始。
  2. 映射键(可选),由带括号的字符序列组成(例如,(somename))。
    .. 还有更多

还: -

当正确的参数是字典(或其他映射类型)时,字符串中的格式必须包含一个插入到该字典中的带括号的映射键,该键紧跟在 '%' 字符之后。映射键从映射中选择要格式化的值

文档中的一个示例:-

>>> print '%(language)s has %(number)03d quote types.' % \
...       {"language": "Python", "number": 2}
Python has 002 quote types.

()因此, after%和 before中的文本skey字典中的 a。

于 2012-11-29T19:57:44.897 回答
4

是的,这类似于 %s。() 里面的部分是引用一个 python 字典的键。例如:

mydict = {'yay':'boo'}
print '%(yay)s'%mydict

# boo
于 2012-11-29T19:58:55.827 回答