TSV 다루기 (+ tsv와 csv의 차이 알아보기)

Aneb·2022년 11월 3일
0

1. 개념

1.1. CSV

CSV란 Comma-separated values의 약자 각 라인의 컬럼들이 콤마로 분리된 텍스트 파일 포맷이다. 가장 간단한 형태의 CSV 파일은 문자열을 콤마로 Split 하여 처리하면 되지만, 간혹 컬럼 데이타에 콤마가 있을 경우 이중인용부호로 감싸서 데이타 내의 콤마를 Escape하기 (예: "Lee, Alex") 때문에, 파이썬에 내장된 csv 모듈을 사용하여 .csv 파일을 처리하는 것이 좋다.

1.2 TSV

CSV 파일과 비슷하지만, 콤마 대신 Tab으로 컬럼을 분리하는 파일포맷을 TSV 파일이라 한다. TSV 파일은 컬럼 delimiter만 차이가 나므로, csv 모듈의 reader() 혹은 writer() 함수에서 delimiter='\t' 옵션만 지정해 주면 나머지는 CSV와 동일하다.


2. tsv 라이브러리 사용

https://github.com/ricardobeat/TSV

적용 코드

const data = [
      { firstname: "Ahmed", lastname: "Tomi", email: "ah@smthing.co.com" },
      { firstname: "Raed", lastname: "Labes", email: "rl@smthing.co.com" },
      { firstname: "Yezzi", lastname: "Min l3b", email: "ymin@cocococo.com" },
    ];

const result = TSV.stringify(data);

console.log(result)

콘솔에 찍힌 결과


3. 적용 - tsv를 클립보드에 복사하기

예시 코드

const data = [
      { firstname: "Ahmed", lastname: "Tomi", email: "ah@smthing.co.com" },
      { firstname: "Raed", lastname: "Labes", email: "rl@smthing.co.com" },
      { firstname: "Yezzi", lastname: "Min l3b", email: "ymin@cocococo.com" },
    ];
   
const createTSV = (data) => {
    const result = TSV.stringify(data);
    copyClipboard(result);
  };

const copyClipboard = (copyContents) => {
    if (navigator.clipboard) {
      navigator.clipboard
        .writeText(copyContents)
        .then(() => {
          alert("클립보드에 복사되었습니다.");
        })
        .catch(() => {
          alert("복사를 다시 시도해주세요.");
        });
    } else {
      if (!document.queryCommandSupported("copy")) {
        return alert("복사하기가 지원되지 않는 브라우저입니다.");
      }
      const textarea = document.createElement("textarea");
      textarea.value = copyContents;
      textarea.style.top = 0;
      textarea.style.left = 0;
      textarea.style.position = "fixed";

      document.body.appendChild(textarea);
      textarea.focus();
      textarea.select();
      document.execCommand("copy");
      document.body.removeChild(textarea);
      alert("클립보드에 복사되었습니다.");
    }
  };

"Cannot read property 'write text' of undefined"

http 환경에서는 해당 에러가 발생하게되므로,
navigator.clipboard 존재 여부에따라 else문 이후의 코드로 동작하게 해야함


참고 내용
https://kyounghwan01.github.io/blog/React/clipboard-copy/#%E1%84%8B%E1%85%A8%E1%84%89%E1%85%B5-%E1%84%8F%E1%85%A9%E1%84%83%E1%85%B3

https://stackoverflow.com/questions/52054635/copy-clipboard-function-working-locally-but-not-working-server

profile
FE Developer

0개의 댓글