#python #json #python-3.x
#python #json #python-3.x
Вопрос:
Я хочу отформатировать JSON для конкретных значений. Моя конечная цель — преобразовать -33.494 143.2104
в {"lat":-33.494,"lon":143.2104}
Я преобразую IP-адрес в географическую широту и долготу:
python3.5 -c "
import geoip2.database; reader=geoip2.database.Reader('/geoip_databases/GeoLite2-City.mmdb');
response = reader.city('1.2.3.4');
print (response.location.latitude, response.location.longitude)"
-33.494 143.2104
Попытался преобразовать его в желаемый результат:
python3.5 -c "
import geoip2.database; reader=geoip2.database.Reader('/geoip_databases/GeoLite2-City.mmdb');
response = reader.city('1.2.3.4')
;a=(response.location.latitude, response.location.longitude);
b=('{"lat":' a '}');
c=b.replace(' ',',"lon"');
print (c)"
Traceback (most recent call last):
File "<string>", line 1, in <module>
TypeError: Can't convert 'tuple' object to str implicitly
Как я могу выполнить следующий вывод {«широта»: -33.494, «длина»: 143.2104}, все еще имеющий одну строку?
Комментарии:
1. Как насчет того, чтобы сделать вашу командную строку настоящим скриптом на Python, чтобы всем было легче ее читать?
2. Как бы сильно я ни любил однострочный формат, это уже перебор. Возможно, вам захочется заглянуть в pydash pick and rename, если вы часто имеете дело с файлами json.
3. Вместо того, чтобы печатать два значения, создайте словарь, содержащий их:
{'lat': response.location.latitude, 'lon': response.location.longitude}
.4. Это сделает свою работу, хороший момент. Спасибо. печать (‘lat’: response.location. широта, ‘lon’: response.location. долгота) Результаты с: {‘широта’: -33.494, ‘длина’: 143.2104}
Ответ №1:
Вы можете попробовать создать dict
и выполнить json.dumps вскоре после этого.
python3.5 -c "
import geoip2.database, json
reader=geoip2.database.Reader('/geoip_databases/GeoLite2-City.mmdb');
response = reader.city('1.2.3.4');
loc_dict = { lat: response.location.latitude, lon: response.location.longitude }
print (json.dumps(loc_dict, indent=4))"