【问题标题】:Passing a dictionary into a string in python将字典传递给python中的字符串
【发布时间】:2014-01-21 22:16:22
【问题描述】:

我正在尝试使用键值对格式化字符串,其中字符串中的变量修饰符由键的名称引用。

我该怎么做呢?这是我的代码:

given_string2 = "I'm %(name)s. My real name is %(nickname)s, but my friends call me %(name)s."
def sub_m(name, nickname):
    return given_string2 %{name:nickname}
print sub_m("Mike","Goose")

【问题讨论】:

    标签: python string dictionary


    【解决方案1】:

    你的问题在这里:given_string2 % {name: nickname}

    这行得通:

    >>> "I'm %(name)s. My real name is %(nickname)s, but my friends call me %(name)s." % {'name': "Mike", 'nickname': "Goose"}
    "I'm Mike. My real name is Goose, but my friends call me Mike."
    

    【讨论】:

      【解决方案2】:

      您可以简单地使用位置参数,如下所示:

      given_string2 = "I'm {0}. My real name is {1}, but my friends call me {0}."
      def sub_m(name, nickname):
          return given_string2.format(name, nickname)
      print sub_m("Mike","Goose")
      

      {} 格式化程序指的是应用于字符串的 format() 方法的 0 索引位置参数。

      【讨论】:

        【解决方案3】:

        我认为您创建字典的方式并不像您认为的那样。 %(name) 和 %(nickname) 占位符必须引用您传递的字典中的有效键。因此,您需要类似:

        'the quick brown %(animal)s jumped over the %(adjective)s dog' % {"animal": "fox", "adjective": "lazy"}
        

        您拥有的是一个字典,其键为“Mike”,值为“Goose”。如果您将原始字符串中的 %(name)s 和 %(nickname)s 更改为 %(Mike)s,您将被 Goose 替换 3 次。

        【讨论】:

          【解决方案4】:
          def sub_m(name, nickname)
              print "I'm %s. My real name is %s, but my friends call me %s" % (name, nickname, name)
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2019-02-11
            • 2021-04-27
            • 2016-12-22
            • 2020-09-26
            • 1970-01-01
            • 1970-01-01
            • 2010-09-29
            • 2012-12-10
            相关资源
            最近更新 更多