Python 索引器:执行嵌套';对于';

Python 索引器:执行嵌套';对于';,python,csv,parsing,street-address,Python,Csv,Parsing,Street Address,我想使用我在这里得到的教程解析印度尼西亚地址: 导入请求 导入json 导入csv 从TQM导入* def地址来自_csv(路径=无,列=无): 地址=[] 打开(路径“r”)作为f: 读卡器=csv。读卡器(f) 对于读取器中的行: addresses.append(行[列]) 回信地址 #从CSV获取地址 addresses=addresses\u from\u csv(path='path/to/your/file.csv',column=0) #设置谷歌地图API密钥 api\U密钥=您

我想使用我在这里得到的教程解析印度尼西亚地址:

导入请求
导入json
导入csv
从TQM导入*
def地址来自_csv(路径=无,列=无):
地址=[]
打开(路径“r”)作为f:
读卡器=csv。读卡器(f)
对于读取器中的行:
addresses.append(行[列])
回信地址
#从CSV获取地址
addresses=addresses\u from\u csv(path='path/to/your/file.csv',column=0)
#设置谷歌地图API密钥
api\U密钥=您的api\U密钥
#初始化转换地址的数组
转换=[]
已转换。追加(['Country','Post code','City','Street&No']))
对于TQM中的查询(地址):
#API调用,将信息存储为JSON
url='1〕https://maps.googleapis.com/maps/api/geocode/json?address='+query+'&lang=en&key='+api_键
r=请求。获取(url)
data=r.json()
#打印(数据)
#清除所有值以避免再次追加以前迭代中的值
编号=街道=国家=邮政编码=城市=“”
#在JSON中的地址组件上循环
对于数据['results'][0]['address_components']中的组件:
如果组件[“类型”]中的“街道编号”:
编号=组件['long_name']
组件['types']中的elif'route':
街道=组件['long_name']
组件[“类型”中的elif“国家”:
国家/地区=组件['long_name']
组件['types']中的elif“邮政编码”:
邮政编码=组件['long\u name']
组件['types']中的elif'locality':
城市=组件['long_name']
组件['types'中的elif'postal_town':
城市=组件['long_name']
其他:
持续
街道和街道编号=街道+“”+编号
已转换。追加([国家、邮政编码、城市、街道和编号])
将open('transformed_addresses.csv','w',newline='',encoding='utf-8')作为f:
writer=csv.writer(f)
对于转换后的行:
writer.writerow(行)
打印(‘完成’)
我的csv格式是这样的

to_address,booking_date
JL. RAYA PASIR PUTIH NO. 6 RT 05/RW 03 (DEPAN TOKO HANIMO) SAWANGAN,15-12-17
LEGENDA WISATA ZONA EINSTEIN BLOK R 12 NO 6 WANAHERANG DEPOK,15-12-17
"PERM CLUSTER TIDAR ASRI BLOK C7 NO 17 KEL RANGKAPAN JAYA PANCORANMAS,DEPOK",15-12-17
"CIBUNTU SAYURAN RT 12/06 KEL WARUNG MUNCANG BANDUNG KULON,BANDUN",15-12-17
但它引起了一个错误

  0%|                                                                                         | 0/1001 [00:00<?, ?it/s]
---------------------------------------------------------------------------
IndexError                                Traceback (most recent call last)
<ipython-input-5-f8eaa665c3a1> in <module>
     10 
     11     # looping over address components in JSON
---> 12     for component in data['results'][0]['address_components']:
     13         if 'street_number' in component['types']:
     14             number = component['long_name']

IndexError: list index out of range

0%|0/1001[00:00您需要处理
data['results']
为空的情况,因此在循环之前,将此行添加到您的代码中:

#这两行代码已添加到您的代码中
如果len(数据['results'])==0:
持续
#在JSON中的地址组件上循环
对于数据['results'][0]['address_components']中的组件:
如果组件[“类型”]中的“街道编号”:
编号=组件['long_name']
组件['types']中的elif'route':
街道=组件['long_name']
组件[“类型”中的elif“国家”:
国家/地区=组件['long_name']
组件['types']中的elif“邮政编码”:
邮政编码=组件['long\u name']
组件['types']中的elif'locality':
城市=组件['long_name']
组件['types'中的elif'postal_town':
城市=组件['long_name']
其他:
持续
请让我知道这是否有用!谢谢:D