프로그래밍 언어/Python

Python으로 작성된 CSV 파일에 각 행 사이에 빈 줄이 있을 때

Rateye 2021. 9. 13. 02:17
728x90
반응형
질문 : Python으로 작성된 CSV 파일에는 각 행 사이에 빈 줄이 있습니다.

import csv

with open('thefile.csv', 'rb') as f:
  data = list(csv.reader(f))
  import collections
  counter = collections.defaultdict(int)

  for row in data:
        counter[row[10]] += 1


with open('/pythonwork/thefile_subset11.csv', 'w') as outfile:
    writer = csv.writer(outfile)
    for row in data:
        if counter[row[10]] >= 504:
           writer.writerow(row)

이 코드 thefile.csv 읽고 변경하고 결과를 thefile_subset1 씁니다.

그러나 결과 csv를 Microsoft Excel에서 열면 각 레코드 뒤에 추가 빈 줄이 있습니다!

여분의 빈 줄을 넣지 않는 방법이 있습니까?

답변

Python 2에서는 'w' 대신 'wb' 모드로 outfile 을 엽니 다. csv.writer\r\n 을 파일에 직접 씁니다. 당신은 바이너리 모드로 파일을 열 수없는 경우, 그것은 쓸 것 \r\r\n 윈도우 텍스트 모드가 변환됩니다 이유로 인해 각 \n\r\n .

Python 3에서는 필수 구문이 변경되었으므로 (아래 문서 링크 참조) 대신 추가 매개 변수 newline='' (빈 문자열)을 사용 outfile

예:

# Python 2
with open('/pythonwork/thefile_subset11.csv', 'wb') as outfile:
    writer = csv.writer(outfile)

# Python 3
with open('/pythonwork/thefile_subset11.csv', 'w', newline='') as outfile:
    writer = csv.writer(outfile)

설명서 링크

출처 : https://stackoverflow.com/questions/3348460/csv-file-written-with-python-has-blank-lines-between-each-row
728x90
반응형