[ Python ] xml 파일 형식에서 원하는 부분 빼서 사용해보기
2019. 5. 16. 20:25ㆍ분석 Python/구현 및 자료
이번에는 xml을 다뤄야 해서,
여기서 원하는 것을 빼는 것을 연습해보겠습니다.
현재 옆에 보시면 annotation 한 것 중에서
저는 object에서 name과 bndbox를 빼고 싶다고 합시다.
그렇다면 어떻게 해야 할까요?
여기서 보시면은 root를 보면 위에서 처럼 annotation이 나옵니다
이제 그다음 그 뿌리를 얻으려면 getchildren을 해야 합니다
해보면 위에 그림과 같이 뿌리를 보여주는 것을 알 수 있습니다.
여기서 보면 알 수 있듯이 결국 어딜 하나를 들어가서
그다음에 뿌리를 보고 또 뿌리를 보고 계속계속 들어가면 되는 구조인 것 같습니다.
그 다음 원하는 것을 얻기 위해 re로 object만 빼냅니다.
object_ = [ i for i in child if re.search("object",str(i)) is not None ]
한 가지 경우만 봐볼까요?
또 파고 들어가서 거기서 내가 원하는 name과 bndbox만 빼내옵니다.
그다음에 저는 이 것을 좌표값 , tag 값으로 달 필요가 있기 때문에 한 문장으로 만들어줘야 했습니다.
여기서 실제 다 들어갔다 싶어서 값을 얻고 싶으면 저는 text를 했으면 됐습니다.
그래서 밑에는 내가 원하는 구조로 바꾸는 거고 다음과 같이 한 문장이 만들어집니다.
text = []
for j in object2 :
if re.search("bndbox" , str(j)) is not None :
object3 = j.getchildren()
store = [k.text for k in object3]
loc = "{} , {} , {} , {} , {} , {} , {} , {}"\
.format(store[0] , store[3] , store[2] , store[3] , store[2] , store[1] , store[0] , store[1])
text.append(loc)
else :
text.append(j.text)
out = text[1] + " , " + text[0]
print(out)
## 446 , 194 , 766 , 194 , 766 , 135 , 446 , 135 , 이복고
이상으로 간단하게 xml에서 원하는 값을 얻어보는 것을 했습니다.
딱 봐도 Loop 지옥이......................
728x90
'분석 Python > 구현 및 자료' 카테고리의 다른 글
[ Python ] Python에서도 R처럼 data.table을 사용할 수 있어요. (0) | 2019.06.02 |
---|---|
[ Python ] UMAP (Uniform Manifold Approximation and Projection) (0) | 2019.05.22 |
[ Python ] numpy를 사용하지 않고 argmax나 argmin을 할 수 있을까? (4) | 2019.05.12 |
[변수 생성] 시간 데이터에서 어떤 변수를 새로 만들 수 있을까? (0) | 2019.05.06 |
[ Python ] 특정 조건을 만족하는 List 문자열만 뽑기 (0) | 2019.05.04 |