목차

반응형

이 작업을 하게된 계기는 이렇다.

엑셀로 온 대량의 데이터를 워드프레스 사이트에다가 HTML 게시판 형태로 보여줘야하지만

해당 프로젝트의 워드프레스에서는 자바스크립트가 먹지를 않고, 게시판 모듈을 설치해서 처리하기가 매우 까다롭고 실제 게시물 조회처리까지는 필요없어서 그냥 자사의 아무서버에 간단한 게시판 리스트 페이지를 만들어서 iframe으로 불러와서 처리하기로 하였다.



이런 형태의 게시판을 만드는것이 목적(리스트만 나오도록)




처리하게된 데이터는 위와같다. 약 127개의 데이터로 아이디값, 서점이름, 주소, 번호, 부가정보

5개의 컬럼정보가 있다(부가정보는 나중에 필요없어서 버림)




흠 어떻게하면 가장빨리 처리할수있을까 생각하다가

저 정보들을 json 데이터로 바꾼뒤에 jquery와 js를 이용해서 뿌려주기로 했다.



일단 먼저 json데이터로 변환하기위해 csv 쉼표로 분리 이 형태로 저장을 하자





불러와보니 이런식으로 되어있다. 이거보면 바로 그냥 에디트플러스 교체기능 써먹어버리면 되는각아니겠음?







자 원하는 결과물은 위 사진과같다

[{"id":"1","name":"하이북","adres":"고양시 덕양구 통일로 140 삼송테크노밸리A동 B14호","tel":"02-336-8840","img":"하이북(*-******)-매장외부정면"},{} ...]

어떻게 해야할까





위의 텍스트처럼 하면된다.

.+ => .은 아무텍스트 +는 n번반복 => 아무텍스트나 무한반복

(.+) => 아무텍스트나 무한반복되는 것을 그룹화

(.+), => 쉼표를 만날때까지 아무텍스트나 무한반복 그리고 아무텍스트를 그룹화

요런 원리로 쉼표로 구분되어있는 텍스트들을 그룹화해서 인식한뒤에 \1 \2 이렇게 그룹화한 정보를 그대로 가져다가 json 형태로 가공한다.








그리하여 위와같은 간이 게시판이 생겼다.






<html>
<head>
<link rel="stylesheet" type="text/css" href="board.css">
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script>
var arr = [{
"id": "127",
"name": "북스벨리(장안대점)",
"adres": "화성시 봉담읍 삼천병마로 1182(장안대학교사회과학관1층 구내서점)",
"tel": "031-244-4376",
"img": "북스벨리(장안대점)(*-******)-매장외부정면"
}
];
</script>
<script>
var page = [];
$(function () {
var i = 0, j = 0;
$.each(arr, function () {
if (i == 9) {
page[j] += "<tr>" +
"<td>" + this.id + "</td>" +
"<td>" + this.name + "</td>" +
"<td>" + this.adres + "</td>" +
"<td>" + this.tel + "</td>" +
"</tr>";
i++;
i = 0;
j++;
}
else {
page[j] += "<tr>" +
"<td>" + this.id + "</td>" +
"<td>" + this.name + "</td>" +
"<td>" + this.adres + "</td>" +
"<td>" + this.tel + "</td>" +
"</tr>";
i++;
}
});
select(0);
});

var select = function (index) {
$('#myTable > tbody:last').empty();
$('#myTable > tbody:last').append(page[index]);
}
</script>
</head>
<body>
<table id="myTable">
<caption>게시판 리스트</caption>
<colgroup>
<col style="width: 7%">
<col style="width: 10%">
<col>
<col style="width: 11%">
<col style="width: 10%">
<col style="width: 10%">
</colgroup>
<thead>
<tr>
<th scope="col">번호</th>
<th scope="col">서점명</th>
<th scope="col">주소</th>
<th scope="col">사업장 전화번호</th>
</tr>
</thead>
<tbody class="body">
</tbody>
</table>
<script>
select(0);
</script>
<a href="#" onclick="javascript:select(0)">1</a>
<a href="#" onclick="javascript:select(1)">2</a>
<a href="#" onclick="javascript:select(2)">3</a>
<a href="#" onclick="javascript:select(3)">4</a>
<a href="#" onclick="javascript:select(4)">5</a>
<a href="#" onclick="javascript:select(5)">6</a>
<a href="#" onclick="javascript:select(6)">7</a>
<a href="#" onclick="javascript:select(7)">8</a>
<a href="#" onclick="javascript:select(8)">9</a>
<a href="#" onclick="javascript:select(9)">10</a>
<a href="#" onclick="javascript:select(10)">11</a>
<a href="#" onclick="javascript:select(11)">12</a>
<a href="#" onclick="javascript:select(12)">13</a>
</body>
</html>


게시판의 소스에 대한것은 위와같다 (페이지 네이션까지 넣음)



이후 퍼블팀이 더 에쁘게 꾸며주었다.





반응형

'IT > regex' 카테고리의 다른 글

editplus 검색한 regex 키워드 활용하기  (0) 2018.04.13
네이트온 채팅 데이터화, 시각화 word cloud  (0) 2018.04.12
반응형



Replacing

Regular Expressions supports tagged expressions. This is accomplished using ( and ) to surround the text you want tagged, and then using \1 in the replace string to substitute the first matched text, \2 for the second, etc.

For example:

Text bodySearch stringReplace stringResult
Hi my name is Fredmy name is (.+)my name is not \1Hi my name is not Fred
The quick brown fox jumped over the fat lazy dogbrown (.+) jumped over the (.+)brown \2 jumped over the \1The quick brown fat jumped over the fox lazy dog

에디트플러스로 regex로 편히 수정을 하다보면 키워드를 찾은뒤에 가공이 필요할 때가 있다.

예를들자면

안녕하세요 김정은입니다.

안녕하세요 문재인입니다.

안녕하세요 홍준표입니다.

안녕하세요 닐리리아입니다.


이런상태에서 양식만 조금 바꾸고싶을때가 있을때

안녕 김정은이라고해

안녕 문재인이라고해

...

이렇게 바꾸고 싶을때는 냅두고 싶은 검색키워드를 ()로 감싸서 아래 바꿀 말에서 그룹 순서를 적어서 써먹을 수 있다.



주로 데이터 삽입하는 쿼리문 작성하거나 쿼리문 대량으로 수정할때 써먹을수있음

반응형
반응형

갑자기 회사 네이트온 채팅방을 대상으로 word cloud를 해보고싶어졌다.

word cloud란 

word cloud에 대한 이미지 검색결과

이런식으로 대량의 텍스트에서 가장 자주 쓰이는 텍스트를 추출하여 시각화하는 것을 말한다.

그냥 재미용으로 많이 쓰이기도 하고 발표할때 시선집중용도로도 자주쓰이는것같다.


어쨌든 회사 네이트온 채팅방에서 모든 텍스트를 긁어왔다.

하지만 큰 문제가 있다.


AAA 님의 말(2017/9/21(목) 오전10:00:13) : 

 - 입니다 


XXX 님의 말(2017/9/21(목) 오전10:00:30) : 

 - 넵넵 


XXX 님의 말(2017/9/21(목) 오전10:00:46) : 

 - 감사합니다~ 


이런식으로 ㅁㅁㅁ 님의 말 날짜 필요없지만 계속해서 점유율이 높은 텍스트가 있기때문에 결과가 제대로 나오지 않는다.

저걸 에디트플러스로 간단하게 지워서 처리할거다.

원리는 regex로 특정 텍스트를 찾아내서 지우는 것이지만 regex에대하여 자세하게 설명하지는 않을 것이다.

에디트플러스나 regex로 검색이 가능한 문서도구를 킨다.


이후 Ctrl + H를 눌러서 정규식표현(Regular expression)과 파일 끝에서 검색(Wrap at the end of file)을 체크해준다.

Find 부분에다가는 "[가-힣ㄱ-ㅎㅏ-ㅣ]{3,} 님의 말.*\n - " 따옴표안의 텍스트를 넣어준다.

그리고 검색을 눌러보면

XXX 님의 말(2017/9/21(목) 오전10:00:46) : 

 - 감사합니다~ 

위처럼 입력한 텍스트를 제외한 부분이 선택이 될 것이다.

정삭적으로 인식 되는것을 확인하였으면 Replace with는 비워두고 Repalce All을 눌러 의미있는 텍스트 외에는 전부다 지운다.


결과물을 아래의 wordcloud 사이트에 넣은뒤에 generate 하면 된다.

https://worditout.com/word-cloud/create


regex 참고사이트

http://egloos.zum.com/Cliver/v/2271143

http://blog.edit.kr/entry/%ED%8E%8CJava%EC%97%90%EC%84%9C-%ED%95%9C%EA%B8%80%EC%9D%84-%EC%A0%95%EA%B7%9C%EC%8B%9D%EC%9C%BC%EB%A1%9C-%EC%B0%BE%EA%B8%B0

반응형