在python中的字符串中插入多个元素

时间:2013-07-01 10:16:11

标签: python python-2.7

我必须像这样构建一个字符串

{ name: "john", url: "www.dkd.com", email: "john@fkj.com" }
其中john,www.dkd.com和john@fkj.com将由变量提供

我尝试了以下

s1 = "{'name:' {0},'url:' {1},'emailid:' {2}}"
s1.format("john","www.dkd.com","john@fkj.com")

我收到以下错误

Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: "'name"

不能理解我做错了什么

6 个答案:

答案 0 :(得分:2)

你需要通过加倍{}来逃避:

s1 = "{{'name:' {0},'url:' {1},'emailid:' {2}}}"
print s1.format("john","www.dkd.com","john@fkj.com")

答案 1 :(得分:2)

看起来你正在尝试构建(格式错误的)JSON或者只是构建一个字典字符串的奇怪方式......

d = {'name': 'bob', 'email': 'whatever', 'x': 'y'}
print str(d)

或者:

import json
print json.dumps (d)

答案 2 :(得分:1)

你可以使用字符串格式,这应该可以正常工作..

s1 = "{'name:' '%s','url:' '%s','emailid:' '%s'}" % ("john","www.dkd.com","john@fkj.com")

答案 3 :(得分:1)

发生此错误是因为您没有转义起始大括号,然后由format()解释为named field

Format String Syntax文档中所述:

  

如果您需要在文字文本中包含大括号字符,可以通过加倍{{和}}来对其进行转义。

所以:

s1 = "{{'name:' {0},'url:' {1},'emailid:' {2}}}"
print s1.format("john","www.dkd.com","john@fkj.com")

将输出:

"{'name:' john,'url:' www.dkd.com,'emailid:' john@fkj.com}"

答案 4 :(得分:1)

根据您的要求格式,这应该有效:

>>> s1 = "{name: '%s',url: '%s',emailid: '%s'}" % ("john","www.dkd.com","john@fkj.com")
>>> s1
"{name: 'john',url: 'www.dkd.com',emailid: 'john@fkj.com'}"

答案 5 :(得分:0)

或者你可以简单地这样做:

print '''{ name: "''' + name + '''", url: "''' + url + '''", email: "''' + email + '''" }'''

这是工作解决方案http://ideone.com/C65HnB