2014-07-04 19 views
1

我得到的錯誤「主要錯誤:‘名’」關鍵錯誤定義字符串時,蟒蛇

誰能告訴問題是用下面的代碼是什麼:

import random 

def mongoCountry(countryNum, provinceNum): 
    """generate some test data""" 
    f = open("F:\\univData\\country-mongo.json", mode = 'w') 
    text = "" 
    for c_n in range(0, countryNum): 
     for p_n in range(0, provinceNum): 
      text += "{name:country{0},provinces:[{$ref : Province,$id : province{1}}]}\n".format(c_n, p_n) 
    f.write(text) 
    f.close() 

mongoCountry(2, 10) 

我GOOGLE了它,所以我知道它是關於dict()對象的。但我在那裏找不到任何這樣的對象。

+0

將請您給詳細的錯誤? – Nilesh

回答

1

如果我正確理解你的程序,你要創建一個JSON對象。正如iCodez在他的回答中所說,Python的format函數將整個字符串視爲格式字符串(或者模板字符串,如果您喜歡的話)。要覆蓋,你可以逃脫格式字符串這樣

"{{name:country{0},provinces:[{{$ref : Province,$id : province{1}}}]}}\n".format(c_n, p_n) 

你會得到類似下面如果c_np_n"Welcome""123"

{name:countryWelcome,provinces:[{$ref : Province,$id : province123}]} 
1

str.format將整個字符串視爲格式字段,因爲它以{name:開頭並以}結尾。下面是一個簡單的字符串演示:

>>> '{a:{0}}'.format(1) 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
KeyError: 'a' 
>>> 

爲了解決這個問題,你可以使用old % formatting

text += "{name:country%i,provinces:[{$ref : Province,$id : province%i}]}\n" % (c_n, p_n)