Python json中的枚举值

Python json中的枚举值,python,json,cgi,Python,Json,Cgi,做一个简单的筛选值。但不明白为什么只取几个值,而不取整个列表。 我使用python编写的CGI。显示136个值,但文件中的值超过1000个 #!/usr/bin/python import json import cgi import cgitb import sys reload(sys) sys.setdefaultencoding('utf8') form = cgi.FieldStorage() cityRu = form.getvalue('city') print ("Conten

做一个简单的筛选值。但不明白为什么只取几个值,而不取整个列表。 我使用python编写的CGI。显示136个值,但文件中的值超过1000个

#!/usr/bin/python
import json
import cgi
import cgitb
import sys
reload(sys)
sys.setdefaultencoding('utf8')
form = cgi.FieldStorage() 
cityRu = form.getvalue('city')
print ("Content-type: text/html")
print ("")
cities = json.loads(open('json/cities.json').read())
ourResult = cities
for rs in ourResult:
    print (rs['name_translations']['en']+' - '+rs['name_translations']['ru'])

问题是其中一个
dict
对象没有键
'ru'
,因此如果需要,请使用此键:

#!/usr/bin/python
import json
import cgi
import cgitb
import sys
reload(sys)
sys.setdefaultencoding('utf8')
form = cgi.FieldStorage() 
cityRu = form.getvalue('city')
print ("Content-type: text/html")
print ("")
cities = json.loads(open('json/cities.json').read())
ourResult = cities
for rs in ourResult:
    try:
        print (rs['name_translations']['en']+' - '+rs['name_translations']['ru'])
    except KeyError:
        print ("ERROR WITH KEYS")
        # do something else...
您也可以这样做:

#!/usr/bin/python
import json
import cgi
import cgitb
import sys
reload(sys)
sys.setdefaultencoding('utf8')
form = cgi.FieldStorage() 
cityRu = form.getvalue('city')
print ("Content-type: text/html")
print ("")
with open('json/cities.json') as jf:
    cities = json.load(jf)
cities_with_ru = filter(lambda x: 'ru' in x['name_translations'], cities)
for rs in cities_with_ru:
    print (rs['name_translations']['en']+' - '+rs['name_translations']['ru'])

这可能更好,但我不确定你到底想做什么。似乎列表中的所有项目都存在
'en'
,但您应该验证。

没有看到您的数据,我们只能猜测…给您一个指向json的链接?当然!我刚开始学习python,没想到会因为这个脚本而停止。如果没有值,则显示空字符串。非常感谢你!作品!