>  Q&A  >  본문

python csv模块生成CSV文件,0字头数字缺失,汉字乱码

python CSV模块 写入CSV文件时,0开头的数字会丢失

# _*_ coding:utf-8 _*_
#win7+python2.7.x
import csv
csvfile = file('csvtest.csv', 'wb')
writer = csv.writer(csvfile)
writer.writerow(['id', 'url', 'keywords'])
data = [
  ('0011', 'http://www.59store.com/', '59store.com'),
  ('0022', 'http://59data.top/', '59data.top'),
  ('0033', 'http://my.space.zmx/', '汉子乱码?')
]
writer.writerows(data)
csvfile.close()

写入CSV时会丢失0字头,汉字乱码

天蓬老师天蓬老师2742일 전948

모든 응답(2)나는 대답할 것이다

  • PHP中文网

    PHP中文网2017-04-17 17:52:05

    엑셀 문제입니다.

    Excel에서는 숫자 열인지 추측하여 숫자 열인 경우 기본적으로 숫자로 표시합니다(0은 생략됨).
    Excel의 기본 형식은 로컬 문자 집합입니다(중국어 간체 버전은 gbk). 파일 앞에 3자리 BOM 헤더를 추가하지 않으면 BOM 형식이 없는 utf8 형식을 자동으로 인식할 수 없습니다. . (Office 2007의 특정 버전에서는 BOM 헤더가 있는 utf8 파일에 대한 버그도 있습니다.)

    (notepad 아님) 텍스트 편집기로 열고 내용을 살펴보세요.


    추가 설명:
    Microsoft의 기존 소프트웨어는 BOM이 없는 UTF8 파일에 대한 지원이 약합니다. bom 헤더는 utf8 파일의 시작 부분에 세 문자를 더한 것입니다(16진수는 EFBBBF). 구체적으로 utf8 bom头를 검색할 수 있습니다.
    완벽한 해결책은 없습니다. 상황에 따라 선택할 수 있도록 나열하겠습니다.

    1. utf 인코딩을 유지하려면 파일 앞에 Bom 헤더를 추가해 보세요. (즉, 파일에 쓰기 전에 세 글자를 쓰세요)

    2. 엑셀 전용이고 중국 본토에서 사용하는 경우 파일을 GBK 인코딩으로 직접 쓸 수 있습니다.

    회신하다
    0
  • 天蓬老师

    天蓬老师2017-04-17 17:52:05

    테스트 결과:

    으아악

    일반 텍스트 파일에는 아무런 문제가 없는 것 같습니다. 아마도 csv 파일을 열 때 사용하는 스프레드시트 소프트웨어 때문인 것 같습니다. (맥의 Numbers, OpenOffice Calc 둘 다 이런 현상이 있습니다)

    예를 들어 id 필드의 유형을 숫자로 설정한 경우 앞에 불필요한 0이 자동으로 무시될 수 있습니다. 이와 같이 일반 텍스트로 변경한 다음 활성화해 볼 수 있습니다.

    P.S Excel 부분은 Yuhe CC 설명서에서 확인할 수 있습니다.

    xlsx 파일을 보다 정확하고 자세하게 처리하려면 데이터 유형(data type)은 물론 형식(format)까지 제어할 수 있는 XlsxWriter를 사용하면 됩니다.

    회신하다
    0
  • 취소회신하다