簡體   English   中英

我正在嘗試使用python將csv文件編碼為utf8

[英]I'm trying to encode csv file to utf8 using python

我正在使用python使用python讀取許多文件並將其編碼為utf8,請嘗試以下代碼:

import os
from os import listdir

def find_csv_filenames(path_to_dir, suffix=".csv" ):
    path_to_dir = os.path.normpath(path_to_dir)
    filenames = listdir(path_to_dir)
#Check *csv directory

    fp = lambda f: not os.path.isdir(path_to_dir+"/"+f) and f.endswith(suffix)
    return [path_to_dir+"/"+fname for fname in filenames if fp(fname)]

def convert_files(files, ascii, to="utf-8"):
    count = 0
    lineno = 0
    for name in files:
        lineno = lineno+1
        with open(name) as f:
            file_target = open(name, mode='r', encoding='latin-1')
            file_content = file_target.read()
            file_target.close

        print(lineno)
        file_source = open("./csv/data{}.csv".format(lineno), mode='w', encoding='utf-8')
        file_source.write(file_content) 

csv_files = find_csv_filenames('./csv', ".csv")
convert_files(csv_files, "cp866") 

問題是,在我將數據讀寫到其他文件並將其編碼設置為utf8之后,它仍然無法正常工作。

在打開編碼不清楚的文件之前,可以使用chardet檢測文件的編碼,而不是使用猜測的編碼來打開文件。 用法是這樣的:

>>> import chardet
>>> encoding = chardet.detect('PATH/TO/FILE')['encoding']

然后使用檢測到的編碼打開文件,然后將內容寫入以“ utf-8”編碼打開的文件。

如果不確定文件是否使用'utf-8'編碼進行轉換,則可以使用enca來查看文件的編碼是'ASCII'還是'utf-8',例如在Linux shell中:

$ enca FILENAME

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM