python转任意文件编码到utf-8

python转任意文件编码到utf-8

#
'''
可以转任意编码到utf-8编码
'''
import chardet
 
 
# 获取文件编码类型
def get_encoding(file):
    # 二进制方式读取,获取字节数据,检测类型
    with open(file, 'rb') as f:
        data = f.read()
        return chardet.detect(data)['encoding']
 
#file_name = 'main1.c'
#enc = get_encoding(file_name)
#print(enc)


from chardet.universaldetector import UniversalDetector

def get_encode_info(file):
 with open(file, 'rb') as f:
     detector = UniversalDetector()
     for line in f.readlines():
         detector.feed(line)
         if detector.done:
             break
     detector.close()
     return detector.result['encoding']

def read_file(file):
    with open(file, 'rb') as f:
        return f.read()

def write_file(content, file):
    with open(file, 'wb') as f:
        f.write(content)

def convert_encode2utf8(file, original_encode, des_encode):
    file_content = read_file(file)
    file_decode = file_content.decode(original_encode,'ignore')
    file_encode = file_decode.encode(des_encode)
    write_file(file_encode, file)

def encodeFile2Utf8(filename):
    file_content = read_file(filename)
    encode_info = get_encode_info(filename)
    if encode_info != 'utf-8':
        convert_encode2utf8(filename, encode_info, 'utf-8')

filename = r'main2.c'


encode_info = get_encode_info(filename) #获取文件编码
print(encode_info)

encodeFile2Utf8(filename)   #转文件编码到utf8格式
  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 是的,可以使用 Python 写一个程序来将任何编码的 CSV 文件换为 UTF-8 编码的 CSV 文件。 你可以使用 Python 的内置模块 csv 和 codecs 来读取原始 CSV 文件并将其换为 UTF-8 编码。 下面是一个示例代码: ``` import csv import codecs # 首先,使用 codecs 模块打开原始 CSV 文件,并指定它的编码方式 with codecs.open("input.csv", "r", encoding="<原始编码方式>") as f: # 使用 csv 模块的 DictReader 函数读取 CSV 文件中的所有行 reader = csv.DictReader(f) # 创建一个新的 CSV 文件,使用 UTF-8 编码 with open("output.csv", "w", newline='', encoding="utf-8") as f_out: # 使用 csv 模块的 DictWriter 函数写入 CSV 文件 writer = csv.DictWriter(f_out, fieldnames=reader.fieldnames) # 写入 CSV 文件的标题行 writer.writeheader() # 遍历原始 CSV 文件中的所有行,并将每行写入新的 CSV 文件 for row in reader: writer.writerow(row) ``` 在上面的代码中,需要指定原始 CSV 文件编码方式(即 `encoding="<原始编码方式>"`)。你还需要确保原始 CSV 文件的行与列是以逗号分隔的,并且有一个标题行。 在运行上述代码后,将生成一个名为 "output.csv" 的新文件,它是使用 UTF-8 编码的 CSV 文件。 ### 回答2: 是的,你可以使用Python编写一个将任何编码的CSV文件换成UTF-8编码的CSV文件的程序。 首先,你需要使用Python内置的csv模块来读取原始CSV文件,并指定原始文件编码格式。你可以使用`csv.reader()`函数来读取原始文件,并将原始文件编码格式作为参数传递给该函数。 接下来,你需要创建一个新的UTF-8编码的CSV文件,并使用`csv.writer()`函数来创建一个写入器。你可以使用`open()`函数来创建一个新的CSV文件,并指定文件编码格式为UTF-8。 然后,你需要遍历读取原始CSV文件中的每一行,并将每一行写入新的UTF-8编码的CSV文件中。你可以使用`writerow()`函数将每一行写入新的CSV文件。 最后,完成数据的读取和写入后,记得关闭原始CSV文件和新的UTF-8编码的CSV文件,以释放资源并保存更改。 下面是一个示例代码: ``` import csv def convert_csv_to_utf8(input_file, output_file): with open(input_file, 'r', encoding='原始编码') as input_csv: reader = csv.reader(input_csv) with open(output_file, 'w', encoding='utf-8', newline='') as output_csv: writer = csv.writer(output_csv) for row in reader: writer.writerow(row) # 调用函数进行换 convert_csv_to_utf8('input.csv', 'output.csv') ``` 在上述代码中,你需要将`input.csv`替换为你实际的原始CSV文件的路径,`output.csv`替换为你想要保存换后的UTF-8编码的CSV文件的路径。同时,将`原始编码`替换为你实际的原始CSV文件编码格式。 这样,你就可以使用Python将任何编码的CSV文件换成UTF-8编码的CSV文件了。 ### 回答3: 在Python中,可以使用csv模块来读取和写入CSV文件,并使用codecs模块来处理文件编码。为了将一个任意编码的CSV文件换为UTF-8编码的CSV文件,可以按照以下步骤进行操作: 1. 导入所需的模块: ```python import csv import codecs ``` 2. 打开原始的CSV文件和目标CSV文件: ```python with codecs.open('原始文件.csv', 'r', encoding='原始编码') as csv_file: reader = csv.reader(csv_file) with codecs.open('目标文件.csv', 'w', encoding='utf-8') as new_csv_file: writer = csv.writer(new_csv_file) ``` 请替换'原始文件.csv'为你实际的原始文件名,并根据你的原始文件编码替换'原始编码'。同样地,将'目标文件.csv'替换为你实际的目标文件名。 3. 逐行读取原始CSV文件,并将其写入目标CSV文件中: ```python for row in reader: writer.writerow(row) ``` 4. 完成操作后,关闭文件: ```python csv_file.close() new_csv_file.close() ``` 综上所述,可以使用以上代码将任意编码的CSV文件换为UTF-8编码的CSV文件。请根据实际情况替换文件名和编码
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值