CSV 파일이라는 게 있습니다. 엑셀에서 작성한 문서를 이 형식으로 저장할 수 있고 또 이 형식의 문서를 더블 클릭하면 엑셀이 실행되다 보니 엑셀 포맷이라고 알고들 계시지만 실은 일반 텍스트 파일입니다. 단지 각 컬럼(필드라고도 합니다)이 쉼표로 구분되어 있을 뿐이죠. CSV라는 말도 comma separate value의 첫 자를 딴 것이고요. 암튼 CSV 파일을 하나 샘플로 보여드리겠습니다.
,,계좌거래내역조회,,,,,,
,조회기간,2011.12.23 ~ 2011.12.23,,,,,,
,계좌번호,111-111-111111,,,총잔액,"987,140,388,948",,
,예금종류,저축예금,,,출금가능금액,"2,388,948",,
,,,,,,,,
,거래일자,시간,적요,출금,입금,내용,잔액,거래점
,2011.12.23,10:43:50,타행IB,0,"700,000",권오영,"2,388,948",(제일)
,2011.12.23,9:47:20,타행환,0,"300,000",우체국보험금,"1,688,948",(우체)
,2011.12.22,7:09:21,신문,"5,880",0,가톨릭신문,"1,388,948",대흥역
,2011.12.22,7:02:16,통신,"25,540",0,LG인터넷요금,"1,394,828",대흥역
오잉? 이게 뭐야... 사실 별거 아닙니다. 은행의 계좌 내역을 엑셀로 저장한 뒤 CSV로 변환한 것입니다. 중요한 것은 세 번째 줄의 총잔액입니다. 보이세요? 9천8백7십억이라는... 후덜덜덜... 근데 출금가능금액은 2백몇십만원입니다. 제가 원래 돈이 엄청 많긴 한데 다 묶여서 출금은 좀 어렵다는 전설이...
각설하고, 위의 CSV 파일 내용을 보면 각 컬럼들이 쉼표로 구분되어 있습니다. 또 어떤 컬럼은 따옴표로 감싸여 있습니다. 이는 해당 컬럼에 쉼표가 들어 있기 때문입니다. 만약 이 컬럼들에 따옴표를 두르지 않는다면 그 쉼표가 금액 컬럼에 들어 있는 쉼표인지, 컬럼을 구분하는 쉼표인지 알 방법이 없겠죠.
여기서 문제를 내겠습니다. 저 문자열을 파싱해서 HTML 포맷으로 만들어 보자는 것입니다. 가령 이렇게 말입니다.
<table>
<tr>
<td>거래일자</td>
<td>시간</td>
.
.
.
<td>2011-12-23</td>
<td>10:43:50</td>
.
.
.
</tr>
</table>
“뭐야, 저게 가능하다고?” 말도 안 되는 얘기 같지만 충분히 됩니다. 다만 그 답은 이 강의 후반부에 알려드릴 생각입니다. 뭐, 그때쯤 되면 답을 알려드릴 필요도 없겠지만요. 여러분 스스로 해결하실 수 있을테니까요.