[급함] API 활용 파이썬 질문
본문
api를 활용해서 이름에 따른 국적을 찾는 코드를 돌려 CSV 파일의 1250개 정도의 리스트 중 1000개를 뽑아내려고 하는데요
'NoneType' object has no attribute 'name'
이런 오류가 나서 혹시 어디에서 문제점이 있는지 알려주실 수 있을까요..?
물어볼 곳이 없어 답답한 마음에 글 적어봅니다.
api는 노출되면 안 되기에 다르게 적어보았습니다.
도와주시면 감사하겠습니다.
(!pip 으로 아래 있는 것들 다 설치한 상태)
import requests
import pycountry
import json
import pandas as pd
import string
import math
def get_adress(names):
apis = list()
for _ in range(0, len(names), 10):
name = names[_:_+10]
api = 'https://api.nationalize.io/?'
for i, nm in enumerate(name):
if i == 0:
api = "".join((api, 'name[]=',nm))
else:
api = "".join((api, '&name[]=',nm))
api= "".join((api, "DHJGDHKRHGJ1223"))
apis.append(api)
return apis
def call_api(names):
r1 = list()
r2 = list()
api_list = get_adress(names)
for api_ in api_list:
response = requests.get(api_)
data = json.loads(response.content)
for datum in data:
r1.append(datum['name'])
if len(datum['country']) == 0:
r2.append('error_empty')
else:
r2.append(pycountry.countries.get(alpha_2=datum['country'][0]['country_id']).name)
result = pd.DataFrame({'Name' : r1, 'country':r2})
return result
def NameParser(FILE_ROOT):
df = pd.read_csv(FILE_ROOT)
for i, name_ in enumerate(df['Name']):
df['Name'][i]=name_.replace(" ", "")
result = call_api(df['Name'])
result.to_csv()
FILE_ROOT = '/Users/SEGUN/Desktop/Name_unique.csv'
df = pd.read_csv(FILE_ROOT)
#result = call_api(df['Names'])
result = call_api(df['Name'][:10])
result.to_csv()
답변 2
몇번째 줄에서 저 에러를 밷는지 주시면 좋았겠지만..
name 속성이 없다고 출력된 내용으로보아
r1.append(datum['name'])
r2.append(pycountry.countries.get(alpha_2=datum['country'][0]['country_id']).name)
위 2개 구간이 아닐까 싶은데
data = json.loads(response.content)
이 구간에서 데이터가 어떻게 내려오는지 봐야 알 수 있지 않을까 싶네요..