>  기사  >  백엔드 개발  >  Python을 사용하여 CSV 왜곡 문자를 생성하는 문제에 대한 솔루션

Python을 사용하여 CSV 왜곡 문자를 생성하는 문제에 대한 솔루션

高洛峰
高洛峰원래의
2017-03-16 16:11:401578검색

수요 배경

최근 회사를 위한 이메일 일일 프로그램을 개발했습니다. 이메일은 일반적으로 양식, 사진 순으로 구성됩니다. 첨부파일은 기본적으로 txt 파일로 작성하는 것이 일반적인데, PM은 이메일에 포함된 첨부파일을 엑셀 등의 소프트웨어로 바로 열 수 있기를 희망하고 있는데, 파일 크기가 200만 달러에 달하는 것으로 생각됐다. 엑셀이 몇배는 더 클텐데, csv 파일은 기본으로 되어있습니다. 엑셀로도 열었는데, 그래도 텍스트 파일이라 크기도 작고 저장도 쉬웠기 때문에 결국 csv 모듈을 이용해서 파일을 저장하기로 했습니다.

Pythoncsv 파일 쓰기

Python은 csv 파일을 읽고 쓸 수 있는 모듈을 내장하고 있습니다. 여기서는 쓰기만 사용하겠습니다. , 주로 잘못된 코드 문제를 해결하는 것입니다.

def save2csv(file_name=None, header=None, data=None):
"""
保存成CSV格式文件,方便Excel直接打开
:param file_name: 保存的文件名
:param header: 表头,每一列的名字
:param data: 具体填充数据
:return:
"""
if file_name is None or isinstance(file_name, basestring) is False:
raise Exception('保存CSV文件名不能为空,并且必须为字符串类型')
if file_name.endswith('.csv') is False:
file_name += '.csv'
file_obj = open(file_name, 'wb')
file_obj.write(codecs.BOM_UTF8) # 防止乱码
writer = csv.writer(file_obj)
if data is None or isinstance(data, (tuple, list)) is False:
raise Exception('保存CSV文件失败,数据为空或者不是数据类型')
if header is not None and isinstance(header, (tuple, list)) is True:
writer.writerow(header)
for row in data:
writer.writerow(row)

참고: 문자 깨짐을 방지하는 세 가지 문장이 있습니다

file_obj = open(file_name, 'wb')
file_obj.write(codecs.BOM_UTF8) # 防止乱码
writer = csv.writer(file_obj)

파일 헤더에 codecs.BOM_UTF8을 작성하면 문자 깨짐을 방지할 수 있습니다. 파일은 모두 utf-8 인코딩 형식입니다

위 내용은 Python을 사용하여 CSV 왜곡 문자를 생성하는 문제에 대한 솔루션의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.