问题描述
-37.8994,144.9799
-37.8063,144.9964
-37.8901,144.8885
我有python脚本,可将这些值从地址解析转换为位置。
import csv
import reverse_geocoder as rg
with open('bb.csv',"rt",encoding='ascii') as infile:
read = csv.reader(infile)
for row in read :
result = rg.search(row)
print(type(result[0]))
print(result)
脚本输出
Loading formatted geocoded file...
<class 'collections.OrderedDict'>
[OrderedDict([('lat','-37.88214'),('lon','144.98215'),('name','Elwood'),('admin1','Victoria'),('admin2','Port Phillip'),('cc','AU')])]
<class 'collections.OrderedDict'>
[OrderedDict([('lat','-37.8'),'145'),'Abbotsford'),''),'-37.857'),'144.89769'),'Williamstown'),'Hobsons Bay'),'AU')])]
我正在努力提取密钥的值-名称,admin1,admin2和cc。
基本上,我想将csv文件中的经纬度长值转换为它们的位置值,然后将这些值粘贴回CSV。请有人帮忙。
解决方法
您对这些字典的Python打印表示感到困惑。无论是否定购,这根本不是问题,只是您没有打印要打印的内容。
for row in read:
result = rg.search(row)
print(type(result[0]))
for item in result:
print(",".join("'%s': '%s'" % (k,v) for k,v in item.items()))
# or maybe
print(",".join([item['lat'],item['lon']]))
这类似于print(print)
只是打印Python的print
函数的表示形式,而不是其实际内容的方式(无论如何,这对于普通的阅读者来说都是无用的)
这很容易,您可以执行json.dumps()
(由于无序,避免直接使用dict()
):
import csv
import reverse_geocoder as rg
import json
from collections import OrderedDict
with open('bb.csv',"rt",encoding='ascii') as infile:
read = csv.reader(infile)
for row in read :
result = rg.search(row)
dicres = json.loads(json.dumps(OrderedDict(result)))
现在dicres
是你的字典。