애를 |
요렇게 |
이런 작업이 빈번하다면 웹상의 데이터 수집 및 처리 관련된 프로그래밍 지식을 빨리 익혀야겠지만, 당장은 열심히 복붙 수작업을 하는 게 빠를 것이다. 그런데 정규표현식을 이용하면 의외로 쉽게(?) 처리할 수 있다.
일단 해당 사이트에서 필요한 데이터를 긁어온 결과는 다음과 같다. 하나의 사건이 4개의 줄 단위로 나뉘어 있는 구조.
4개의 줄을 6개의 필드로 나뉜, 하나의 줄로 바꿔야 한다. 즉 다음 구조를,
DS525공백Ukraine공백-공백Measures relating to Trade in Goods and Services
COMPLAINANT:공백RUSSIAN FEDERATION
CONSULTATIONS REQUESTED:공백19 MAY 2017
CURRENT STATUS:공백IN CONSULTATIONS
다음과 같은 테이블 구조로 바꿔야 한다.
DS525구분기호Ukraine구분기호Measures relating to Trade in Goods and Services구분기호RUSSIAN FEDERATION구분기호19 MAY 2017구분기호IN CONSULTATIONS
'문자열:공백' 영역을 '구분기호'로 바꾼 후, 4개의 줄을 하나로 합치면 될 듯. 해보자. 언제나 그렇듯 검사만 할 수 있으면 삭제는 쉽다.
'문자열:공백' 영역 검사 |
'문자열:공백' 영역 삭제 |
줄을 합치는 것도 쉽다. 줄 끝을 의미하는 줄바꿈 문자(\n)를 삭제하면 줄 구분이 사라지기 때문. 문제는 각 줄을 4개 단위로만 합쳐야 한다는 것이다.
VIM 치환 명령어 '%s/\n//'는 모든 줄의 줄바꿈 문자를 삭제해버리기 때문에 다음처럼 모든 데이터가 한 줄로 바뀌어 버린다.
각 사건의 네 번째 줄 끝에 위치하는 줄바꿈 문자는 지우면 안 된다는 얘기. 음, 어쩌나? 데이터의 구조를 다시 한 번 살펴보자.
삭제 대상인 '문자열:공백' 영역은 모두 이전 줄 끝과 이어져 있다. 그렇다면 '줄끝문자열:공백' 영역을 삭제하면 어떨까? 해보자.
첫 번째 줄의 '줄바꿈 문자'부터 검사 시작 |
두 번째 줄의 ':공백'에서 검사 종료 |
최종 검사 결과는 다음과 같다. 결과적으로 각 사건별 네 번째 줄의 줄바꿈 문자는 검사 영역에 포함되지 않는다.
이제 '일련번호공백분쟁국공백-공백타이틀' 영역만 구분하면 된다. 쉽지 뭐.
'일련번호공백분쟁국' 영역 구분 |
'분쟁국공백-공백타이틀' 영역 구분 |
문자열 데이터가 뛰어봐야 정규표현식 손바닥 안 - 데이터 분석이 쉬워지는 정규표현식(459페이지)
관련 글
댓글 없음:
댓글 쓰기