当前位置: 首页 > 知识库问答 >
问题:

将多个CSV文件转换为UTF-8编码

唐威
2023-03-14

我需要将多个CSV文件(使用不同的编码)转换为UTF-8。

这是我的代码:

#find encoding and if not in UTF-8 convert it

import os
import sys
import glob
import chardet
import codecs

myFiles = glob.glob('/mypath/*.csv')

csv_encoding = []

for file in myFiles:
  with open(file, 'rb') as opened_file:
     bytes_file=opened_file.read()
     result=chardet.detect(bytes_file)
     my_encoding=result['encoding']
     csv_encoding.append(my_encoding)
        
print(csv_encoding)

for file in myFiles:
  if csv_encoding in ['utf-8', 'ascii']:
    print(file + ' in utf-8 encoding')
  else:
    with codecs.open(file, 'r') as file_for_conversion:
      read_file_for_conversion = file_for_conversion.read()
    with codecs.open(file, 'w', 'utf-8') as converted_file:
       converted_file.write(read_file_for_conversion)
    print(file +' converted to utf-8')

当我尝试运行此代码时,我得到以下错误: UnicodeDecodeError:'utf-8'编解码器无法解码位置5057的字节0xf3:无效的延续字节

有人能帮我吗?谢谢

共有1个答案

洪建茗
2023-03-14

您需要zip列表myFilescsv\u encoding来对齐它们的值:

for file, encoding in zip(myFiles, csv_encoding):
    ...

您需要在调用中指定该值:

    ...
    with codecs.open(file, 'r', encoding=encoding) as file_for_conversion:

注意:在Python3中,不需要使用编解码器模块来打开文件。只需使用内置的open函数,并使用encoding参数指定编码。

 类似资料:
  • 我用node.js生成一个utf-8编码的csv,然后在windows上双击打开它。Excel会启动,但某些特殊字符(如`、`、ü、ä、ö、ü...)无法正确显示。我想这是由于错误的编码。我保存了一个用Excel创建的新csv。我看到编码是Windows-1252。

  • 问题内容: 我需要将文本文件转换为String,最后,我应该将其作为输入参数(类型InputStream)放入IFile.create(Eclipse)。寻找示例或方法,但仍然不知道…需要您的帮助! 只是为了测试,我确实尝试将原始文本文件转换为使用此代码编码的UTF-8 但即使以为最终的* .test.txt文件具有UTF-8编码,里面的字符也已损坏。 问题答案: 您需要使用参数指定的编码。 这也

  • 我有UTF-8源数据,我必须创建在Windows 1252字符编码编码的CSV文件。 我尝试了经典功能,但效果不佳。它必须支持转换后的塞尔维亚字符: "čćžšđ" 。 此外,我还尝试转换为CP1252、ISO-8859-1、ISO-8859-2,功能包括:mb_convert_编码、iconv和iconv_set_编码。 有人知道该试试什么吗?

  • 本文向大家介绍PHP 将ASCII转换为UTF-8编码,包括了PHP 将ASCII转换为UTF-8编码的使用技巧和注意事项,需要的朋友参考一下 如果我们知道当前的编码是ASCII,则可以使用'iconv'函数将ASCII转换为UTF-8。原始字符串可以作为参数传递给iconv函数,以将其编码为UTF-8。 示例 具有特殊字符的字符串被分配给'str'变量。它以当前所在的编码以及需要转换为的编码传递

  • 问题内容: 我已阅读以下有关通过GoogleDocs将UTF-8编码的(希伯来语)XLS转换为CSV的建议,并且可以正常工作。当我在Sublime2中使用utf8编码打开CSV时,希伯来语正确显示。但是,当我尝试使用SQLyog将数据导入到我的数据库中时,在确保将我的目标表和导入定义都设置为UTF8之后,我变得很乱,例如: ⒚椔 我哪里出问题了? 问题答案: 从excel导出到csv的最佳方法是:

  • 我有一个。csv文件,以西班牙语编写,因此它具有特殊字符,如ñ,á,é,í,ó,ú。因此,如果我在记事本中打开它,我可以看到所有正确书写的字符,并且我已经用UTF-8编码保存了文件。但是,当我打开RStudio并使用以下方式导入数据时: 我得到了所有数据集,但编码不正确,即: 应包括以下内容: 我已经尝试了所有的方法,我不知道还能做什么,因为我已经检查过R是否使用UTF-8编码,文件是否以相同的方