如果不存在另一个则从json文件返回数据

问题描述 投票:0回答:2

下载后,我试图从Overpass API JSON数据返回数据到Django模型中>

"elements": [
{
  "type": "node",
  "id": 662934404,
  "lat": 35.572157,
  "lon": 45.3898839,
  "tags": {
    "addr:postcode": "46001",
    "name": "City Center",
    "name:en": "City Center Mall",
    "name:ku": "City Center Mall",
    "shop": "mall",
    "website": "http://www.citycentersul.com"
  }
},
{
  "type": "node",
  "id": 2413990402,
  "lat": 35.5014386,
  "lon": 45.4457576,
  "tags": {
    "addr:city": "sulaymaniyah",
    "designation": "ASSAN",
    "name": "ASSAN STEEL CO.",
    "opening_hours": "3 min",
    "shop": "doityourself",
    "source": "ASSAN Steel Company General  Trading  Co, Ltd"
  },
{
  "type": "node",
  "id": 2414374708,
  "lat": 35.506121,
  "lon": 45.4417229,
  "tags": {
    "addr:city": "sulaymaniyah",
    "name:ku": "ASSAN Steel Company General Trading Co, Ltd",
    "shop": "doityourself",
  }
},

但是某些数据主体将两者结合在一起name , name:ku ,name:en因此,如果name为none,该怎么办,然后返回name:ku;如果存在,则返回name:en

我已经尝试过了,但是没有用

with open('data.json') as datafile:
    objects = json.load(datafile)
    for obj in objects['elements']:
        try:
            objType = obj['type']
            if objType == 'node':
                tags = obj['tags']
                name = tags.get('name')
                if not name:
                    name = tags.get('name:en')
                elif not name:
                    name = tags.get('name:ku')
                elif not name:
                    name = tags.get('name:ar')
                else:
                    name = tags.get('shop','no-name')

还有其他我想念的东西吗?感谢您的帮助

[我正在尝试从下载了“ elements”之后的Overpass API JSON数据返回数据到Django模型:[{“ type”:“ node”,“ id”:662934404,“ lat”:35.572157,“ lon”: 45.3898839,“标签”:{“ ...

python json openstreetmap
2个回答
1
投票

您可以遍历所有可能的键并在检测到值后停止:


1
投票

以下及所有后续的elif条件均错误:

© www.soinside.com 2019 - 2024. All rights reserved.