>  기사  >  백엔드 개발  >  Python을 사용하여 텍스트 파일의 인코딩 형식을 일괄 수정하는 방법

Python을 사용하여 텍스트 파일의 인코딩 형식을 일괄 수정하는 방법

WBOY
WBOY앞으로
2023-05-01 19:13:112469검색

파이썬을 사용하여 텍스트 파일의 인코딩 형식을 일괄 수정합니다.

ascii, gb2312, utf8 등 텍스트 파일의 인코딩 형식을 일괄 변환하고, 문자 집합의 크기로 판단하여 utf8>로 서로 변환합니다. ;gb2312>ascii이므로 gb2312를 utf8로 변환하는 것이 가장 좋습니다. 그렇지 않으면 잘못된 문자가 쉽게 나타납니다.

gb2312와 utf-8의 주요 차이점:

글꼴 크기 정보: UTF-8 > gb2312(utf8은 더 비대해지고 로드 속도가 느리며, gb2312는 더 작고 로드 속도가 빠릅니다.)

적용 범위 정보: gb2312는 주로 중국 본토에서 사용되며 현지화된 문자 집합입니다. UTF-8은 중국의 모든 국가를 포함합니다. 그것을 사용해야 하는 세상. 캐릭터는 국제적인 코드이며 활용도가 높습니다. UTF-8로 인코딩된 텍스트는 UTF8 문자 집합을 지원하는 다양한 국가의 브라우저에 표시될 수 있습니다.

import sys
import chardet
import codecs
 
def get_encoding_type(fileName):
    '''print the encoding format of a txt file '''
    with open(fileName, 'rb') as f:
        data = f.read()
        encoding_type = chardet.detect(data)
        #print(encoding_type)
        return encoding_type
        # such as {'encoding': 'GB2312', 'confidence': 0.99, 'language': 'Chinese'}
 
def convert_encoding_type(filename_in, filename_out, encode_in="gb2312", encode_out="utf-8"):
    '''convert encoding format of txt file '''
    #filename_in = 'flash.c'
    #filename_out = 'flash_gb2312.c'
    #encode_in = 'utf-8'  # 输入文件的编码类型
    #encode_out = 'gb2312'# 输出文件的编码类型
    with codecs.open(filename=filename_in, mode='r', encoding=encode_in) as fi:
        data = fi.read()
        with open(filename_out, mode='w', encoding=encode_out) as fo:
            fo.write(data)
            fo.close()
        # with open(filename_out, 'rb') as f:
        #     data = f.read()
        #     print(chardet.detect(data))
 
if __name__=="__main__":
    # fileName = argv[1]
    # get_encoding_type(fileName)
    # convert_encoding_type(fileName, fileName)
    filename_of_files = sys.argv[1]   #the file contain full file path at each line
    with open(filename_of_files, 'rb') as f:
        lines = f.readlines()
        for line in lines:
            fileName = line[:-1]
            encoding_type = get_encoding_type(fileName)
            if encoding_type['encoding']=='GB2312':
                print(encoding_type)
                convert_encoding_type(fileName, fileName)
                print(fileName)

보충: Python은 파일을 utf-8 형식으로 일괄 변환을 구현합니다.python은 파일을 utf-8 형식으로 일괄 변환을 구현합니다.

xml_path = './'
with open(xml_path , 'rb+') as f:
    content = f.read()
    codeType = detect(content)['encoding']
    content = content.decode(codeType, "ignore").encode("utf8")
    fp.seek(0)
    fp.write(content)

위 내용은 Python을 사용하여 텍스트 파일의 인코딩 형식을 일괄 수정하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 yisu.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제