Перебирать словарь, чтобы заменить ведущие нули?

Я хочу перебрать этот словарь и найти любой идентификатор с начальным нулем, как показано ниже, и заменить его без нуля. Таким образом, «id»: «01001» станет «id»: «1001».

Вот как получить данные, с которыми я работаю:

from urllib.request import urlopen
import json
with urlopen('https://raw.githubusercontent.com/plotly/datasets/master/geojson-counties-fips.json') as response:
    counties = json.load(response)

до сих пор мне удавалось получать по одному идентификатору за раз, но я не уверен, как выполнить цикл, чтобы получить все идентификаторы:

Мой код до сих пор: counties['features'][0]['id']

{ 'type': 'FeatureCollection',
 'features': [{'type': 'Feature',
   'properties': {'GEO_ID': '0500000US01001',
    'STATE': '01',
    'COUNTY': '001',
    'NAME': 'Autauga',
    'LSAD': 'County',
    'CENSUSAREA': 594.436},
   'geometry': {'type': 'Polygon',
    'coordinates': [[[-86.496774, 32.344437],
      [-86.717897, 32.402814],
      [-86.814912, 32.340803],
      [-86.890581, 32.502974],
      [-86.917595, 32.664169],
      [-86.71339, 32.661732],
      [-86.714219, 32.705694],
      [-86.413116, 32.707386],
      [-86.411172, 32.409937],
      [-86.496774, 32.344437]]]},
   'id': '01001'}
    ]
}

person user2200270    schedule 14.06.2020    source источник
comment
Вы пометили его пандами, это вопрос о пандах? Если да, пожалуйста, включите образец фрейма данных.   -  person Shubham Sharma    schedule 14.06.2020
comment
Пожалуйста, включите код, который вы пытались решить до сих пор, чтобы решить проблему.   -  person sushanth    schedule 14.06.2020
comment
Хорошо, я добавил, как получить данные, с которыми я работаю   -  person user2200270    schedule 14.06.2020
comment
Вам нужно будет перебрать dict и использовать lstrip, чтобы удалить начальные нули for x in counties['features']: x['id'] = x['id'].lstrip('0')   -  person sushanth    schedule 14.06.2020


Ответы (3)


Предположим, что ваш словарь countries содержит следующие данные. Вы можете использовать следующий код:

counties={'type': 'FeatureCollection', 
     'features': [ {'type': 'Feature','properties': {'GEO_ID': '0500000US01001','STATE': '01','COUNTY': '001','NAME': 'Autauga', 'LSAD': 'County','CENSUSAREA': 594.436},
    'geometry': {'type': 'Polygon','coordinates': [[[-86.496774, 32.344437],[-86.717897, 32.402814],[-86.814912, 32.340803],
      [-86.890581, 32.502974],
      [-86.917595, 32.664169],
      [-86.71339, 32.661732],
      [-86.714219, 32.705694],
      [-86.413116, 32.707386],
      [-86.411172, 32.409937],
      [-86.496774, 32.344437] ]] } ,'id': '01001'}, {'type': 'Feature','properties': {'GEO_ID': '0500000US01001','STATE': '01','COUNTY': '001','NAME': 'Autauga', 'LSAD': 'County','CENSUSAREA': 594.436},
    'geometry': {'type': 'Polygon','coordinates': [[[-86.496774, 32.344437],[-86.717897, 32.402814],[-86.814912, 32.340803],
      [-86.890581, 32.502974],
      [-86.917595, 32.664169],
      [-86.71339, 32.661732],
      [-86.714219, 32.705694],
      [-86.413116, 32.707386],
      [-86.411172, 32.409937],
      [-86.496774, 32.344437] ]] } ,'id': '000000000001001'} ]} 

for feature in counties['features']:
    feature ['id']=feature ['id'].lstrip("0")

print(counties)    
person Roohollah Etemadi    schedule 14.06.2020

from urllib.request import urlopen
import json
with urlopen('https://raw.githubusercontent.com/plotly/datasets/master/geojson-counties-fips.json') as response:
    counties = json.load(response)

Затем выполните итерацию по списку, если идентификатор соответствует вашей структуре JSON. И обновите идентификатор как

counties['features'][0]['id'] = counties['features'][0]['id'].lstrip("0") lstrip удалит ведущие нули из строки.

person Paras Mishra    schedule 14.06.2020

Вот более короткий и быстрый способ сделать это с помощью хуков объектов json,

def stripZeroes(d):
    if 'id' in d:
        d['id'] = d['id'].lstrip('0')
        return d
    return d
with urlopen('https://raw.githubusercontent.com/plotly/datasets/master/geojson-counties-fips.json') as response:
    counties = json.load(response, object_hook=stripZeroes)
person Anurag Wagh    schedule 14.06.2020