Python에서 Dictwriter로 출력 할 때 CSV 파일에 각 데이터 줄 사이에 빈 줄이있는 이유는 무엇입니까?
이 질문에 이미 답변이 있습니다.
DictWriter를 사용하여 사전의 데이터를 csv 파일로 출력하고 있습니다. CSV 파일의 각 데이터 줄 사이에 빈 줄이있는 이유는 무엇입니까? 큰 문제는 아니지만 "이중 간격"이 파일의 줄 수를 두 배로 늘리기 때문에 너무 많은 줄이 있기 때문에 데이터 세트가 크고 하나의 csv 파일에 맞지 않습니다.
사전에 쓰는 코드는 다음과 같습니다.
headers=['id', 'year', 'activity', 'lineitem', 'datum']
output = csv.DictWriter(open('file3.csv','w'), delimiter=',', fieldnames=headers)
output.writerow(dict((fn,fn) for fn in headers))
for row in rows:
output.writerow(row)
기본적으로 csv
모듈 의 클래스는 \r\n
Unix 스타일 ( \n
)이 아닌 Windows 스타일 줄 종결 자 ( )를 사용합니다. 이것이 명백한 이중 줄 바꿈의 원인 일 수 있습니까?
그렇다면 DictWriter
생성자 에서 재정의 할 수 있습니다 .
output = csv.DictWriter(open('file3.csv','w'), delimiter=',', lineterminator='\n', fieldnames=headers)
에서 http://docs.python.org/library/csv.html#csv.writer :
csvfile이 파일 객체 인 경우 차이가 나는 플랫폼에서 'b'플래그로 열어야합니다.
즉, 파일을 열 때 'w'가 아닌 'wb'를 전달합니다. 파일 쓰기가 끝나면 문을
사용 with
하여 파일을 닫을 수도 있습니다 .
아래 테스트 된 예 :
from __future__ import with_statement # not necessary in newer versions
import csv
headers=['id', 'year', 'activity', 'lineitem', 'datum']
with open('file3.csv','wb') as fou: # note: 'wb' instead of 'w'
output = csv.DictWriter(fou,delimiter=',',fieldnames=headers)
output.writerow(dict((fn,fn) for fn in headers))
output.writerows(rows)
이 줄에서 'w'(쓰기) 변경 :
output = csv.DictWriter(open('file3.csv','w'), delimiter=',', fieldnames=headers)
'wb'(바이너리 쓰기)하려면이 문제를 해결했습니다.
output = csv.DictWriter(open('file3.csv','wb'), delimiter=',', fieldnames=headers)
위의 원본 게시물에 대한 의견의 솔루션에 대해 @dandrejvv에게 감사드립니다.
방금 귀하의 스 니펫을 테스트했으며 여기에는 이중 간격 줄이 없습니다. 라인의 끝은 \r\n
이므로 귀하의 경우 확인하려는 것은 다음과 같습니다.
- 편집기가 DOS 파일을 올바르게 읽고 있습니다.
- 행 dict의 값에 \ n이 없습니다.
(\ n으로 값을 입력해도 DictWriter는 자동으로 값을 인용합니다.)
'Programing' 카테고리의 다른 글
GitHub에서 한 파일에 대한 변경 내역을 패치 형식으로 표시 할 수 있습니까? (0) | 2020.09.09 |
---|---|
SQL Server에서 요일 가져 오기 (0) | 2020.09.09 |
페이지를 다시로드하지 않고 쿼리 문자열 수정 (0) | 2020.09.09 |
PostgreSQL 데이터베이스 복원시 권한 문제를 해결하는 방법 (0) | 2020.09.09 |
앱 매니페스트에 Google Play 서비스 버전을 추가 하시겠습니까? (0) | 2020.09.09 |