티스토리 뷰
728x90
안녕하세요. 개발개입니다.
이번 글에서는 Python으로 CSV 또는 TSV 쓰기 작업 시
공백줄(빈 줄)이 행마다 자동 생성 되는 문제를 해결하는 방법에 대해 알아보도록 하겠습니다.
오타, 오류 혹은 기타 의견은 언제든지 환영합니다.
You can also read this post in Enlish via the link below :
[EN/PYTHON] - [PYTHON3] How to get rid of blank lines between rows (for csv.writer)
개발환경 |
Windows 10 python 3.6.4 |
문제 상황
Windows 환경에서 csv.writer를 통해 파일 tsv 파일 생성 시,
매 행마다 추가적으로 공백줄(빈줄)이 생성되는 상황 (csv도 동일)
문제 소스
from datetime import datetime
import json
import csv
import os
# tsv파일에 들어갈 샘플 데이터
head = [
"Seq",
"Name",
"Kind",
"Colour"
]
body = [
[1, "Apple", "Fruit", "Red"],
[2, "Banana", "Fruit", "Yellow"],
[3, "Caterpillar", "Insect", "Green"],
[4, "Dear", "Animal", "Brown"],
[5, "Elephant", "Animal", "Grey"]
]
# 디렉토리 및 파일명 설정
filename = os.path.join("D:/blank.tsv")
# tsv 파일 쓰기
with open(filename, "w") as result_file :
# delimiter를 '\t'로 설정한 csv.writer는 tsv 파일을 의미함
tsv_writer = csv.writer(result_file, delimiter='\t')
## 헤더 붙이기
tsv_writer.writerow(head)
## 바디 붙이기
for row in body :
tsv_writer.writerow(row)
문제점
해당 문제는 csv.writer를 Windows 운영체제에서 사용할 때 발생합니다.
csv.writer는 \r\n 을 파일에 쓰게되는데,
바이너리 모드가 아닌 경우 Windows는 \n 을 \r\n 으로 치환하므로
결과적으로 \r\r\n 이 되기 때문입니다.
728x90
해결 방법
with open(filename, "w") as result_file :
이 부분을 아래와 같이 newline=""을 추가한 내용으로 수정합니다
with open(filename, "w", newline="") as result_file :
수정 소스
from datetime import datetime
import json
import csv
import os
# tsv파일에 들어갈 샘플 데이터
head = [
"Seq",
"Name",
"Kind",
"Colour"
]
body = [
[1, "Apple", "Fruit", "Red"],
[2, "Banana", "Fruit", "Yellow"],
[3, "Caterpillar", "Insect", "Green"],
[4, "Dear", "Animal", "Brown"],
[5, "Elephant", "Animal", "Grey"]
]
# 디렉토리 및 파일명 설정
filename = os.path.join("D:/no_blank.tsv")
# tsv 파일 쓰기
with open(filename, "w", newline="") as result_file :
# delimiter를 '\t'로 설정한 csv.writer는 tsv 파일을 의미함
tsv_writer = csv.writer(result_file, delimiter='\t')
## 헤더 붙이기
tsv_writer.writerow(head)
## 바디 붙이기
for row in body :
tsv_writer.writerow(row)
수정 결과
본 글은 다음을 참고하여 작성되었습니다.
python2의 경우 다음 링크를 참고하세요.
https://sopython.com/canon/97/writing-csv-adds-blank-lines-between-rows/
728x90
'KR > Python' 카테고리의 다른 글
[Python] 2차원 배열 생성/초기화 주의사항 (0) | 2021.05.04 |
---|---|
[Python] 수열 구현하기 (0) | 2021.05.03 |
[Python] 3 6 9 게임 구현하기 (4) | 2021.05.03 |