2

I have to build a string like this

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

where john, www.dkd.com and john@fkj.com are to be supplied by variables

I tried to do the following

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

I am getting the following error

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

Dont able to understand what I am doing wrong

4

6 に答える 6

2

(不正な形式の) JSON を構築しようとしているか、辞書の文字列を構築するだけの奇妙な方法を試みているようです...

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

または:

import json
print json.dumps (d)
于 2013-07-01T10:30:43.893 に答える
1

このエラーは、開始中括弧をエスケープしなかったために発生しますformat()named field

Format String Syntax documentationで述べたように:

リテラル テキストに中かっこを含める必要がある場合は、{{ と }} を二重にすることでエスケープできます。

そう:

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}"
于 2013-07-01T10:26:43.763 に答える
0

または、これを簡単な方法で行うこともできます。

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

ここに実用的なソリューションがありますhttp://ideone.com/C65HnB

于 2013-07-01T10:31:07.770 に答える