Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Cara menggunakan python untuk mengubah suai format pengekodan fail teks secara berkumpulan

Cara menggunakan python untuk mengubah suai format pengekodan fail teks secara berkumpulan

WBOY
WBOYke hadapan
2023-05-01 19:13:112464semak imbas

Gunakan python untuk mengubah suai format pengekodan fail teks secara berkelompok

Tukar format pengekodan fail teks dalam kelompok, seperti ascii, gb2312, utf8, dsb., dan menukar satu sama lain berdasarkan saiz daripada set aksara, utf8>gb2312>ascii , jadi sebaiknya tukar gb2312 kepada utf8, jika tidak, aksara yang bercelaru akan muncul dengan mudah.

Perbezaan utama antara gb2312 dan utf-8:

Mengenai saiz fon : UTF-8 > gb2312 (utf8 mempunyai semua aksara dan gb2312 hanya mempunyai aksara Cina )

Mengenai penjimatan saiz: UTF-8> gb2312 (utf8 lebih kembung dan memuatkan lebih perlahan, gb2312 lebih kecil dan memuat lebih cepat)

Mengenai skop of application: gb2312 digunakan terutamanya di tanah besar China Ia adalah set aksara setempat UTF-8 mengandungi aksara yang diperlukan oleh semua negara di dunia Ia adalah pengekodan antarabangsa dan mempunyai kepelbagaian yang kuat. Teks yang dikodkan UTF-8 boleh dipaparkan pada pelayar di pelbagai negara yang menyokong set aksara 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)

Tambahan: python melaksanakan penukaran kumpulan fail kepada format utf-8

python melaksanakan penukaran kumpulan fail kepada format 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)

Atas ialah kandungan terperinci Cara menggunakan python untuk mengubah suai format pengekodan fail teks secara berkumpulan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam