1편에서 pandas를 이용해 xml정보를 csv엑셀로 저장하는것을 해보았다.
그러다 특정 정보에서 charge라는 요금항목을 누락해서 xml return해주는 경우가 발생해서
오류가 났다.
☆ 정상 xml 리턴
<item>
<arrPlaceNm>전주</arrPlaceNm>
<arrPlandTime>201707011100</arrPlandTime>
<charge>20500</charge>
<depPlaceNm>상봉</depPlaceNm>
<depPlandTime>201707010800</depPlandTime>
<gradeNm>우등</gradeNm>
<routeId>NAEK040602</routeId>
</item>
☆ 누락된 xml 리턴
<item>
<arrPlaceNm>안동</arrPlaceNm>
<arrPlandTime>201707011000</arrPlandTime>
<depPlaceNm>서울경부</depPlaceNm>
<depPlandTime>201707010720</depPlandTime>
<gradeNm>우등</gradeNm>
<routeId>NAEK010840</routeId>
</item>
df.loc[i] = [item.arrplacenm.text, item.arrplandtime.text, item.charge.text, item.depplacenm.text, AttributeError: 'NoneType' object has no attribute 'text' Process finished with exit code 1
조건을 주어 에러를 방지해야하겠다.
기존의 코드는 이러했다.
for item in items.findAll("item"):
df.loc[i] = [item.arrplacenm.text, item.arrplandtime.text, item.charge.text, item.depplacenm.text,
item.depplandtime.text, item.gradenm.text, item.routeid.text]
i=i+1
에러방지를 위해 아래와 같이 추가해 주었다.
charge = "-"
for item in items.findAll("item"):
if (item.charge != None):
charge = item.charge.text
else:
charge = "-"
df.loc[i] = [item.arrplacenm.text, item.arrplandtime.text, charge, item.depplacenm.text,
item.depplandtime.text, item.gradenm.text, item.routeid.text]
i=i+1
item에 charge가 있을때만 가져오고 없을때는 -로 저장되도록 수정하고 정상적으로 작동되었다.
다른값들도 혹시나 하는 오류를 방지를 위해서 위와같이 변경해줘도 좋을것 같다.
'Python' 카테고리의 다른 글
python pandas로 중복된 데이터 제거하기 (0) | 2019.03.15 |
---|---|
python pandas 이용해서 xml정보 파싱 후 csv 엑셀로 저장하기[1] (0) | 2019.02.11 |