ホームページ >バックエンド開発 >Python チュートリアル >Pythonを使ってテキストファイルのエンコード形式を一括変更する方法

Pythonを使ってテキストファイルのエンコード形式を一括変更する方法

WBOY
WBOY転載
2023-05-01 19:13:112529ブラウズ

Pythonを使ってテキストファイルのエンコード形式を一括変更する

テキストファイルのエンコード形式を一括でascii、gb2312、utf8などに変換し、相互変換します。 utf8>gb2312>ascii という文字セットなので、gb2312 を utf8 に変換すると文字化けしやすくなります。

gb2312 と utf-8 の主な違い:

フォント サイズについて : UTF-8 > gb2312 (utf8 にはすべての文字が含まれ、gb2312 には中国語の文字のみが含まれます) )

保存サイズについて: UTF-8>gb2312 (utf8 はより肥大化して読み込みが遅く、gb2312 は小さくて読み込みが高速です)

の範囲についてapplication: 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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はyisu.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。