運行如下代碼后,excel打開是亂碼,想問下大神怎么解決,csv里有漢字的,應該是轉碼的問題,找了很久也沒發現怎么解決,謝謝大家了。
如果不加#coding=gbk報錯為:
(unicode error) 'utf-8' codec can't decode byte 0xc0 in position 17: invalid start byte
加上之后可以轉換,但就是打開是亂碼,求教大神,謝謝!
#coding=gbk
# -*- coding:utf-8 –*-
# 匯入pandas
import pandas as pd
import os
# 建立單個檔案的excel轉換成csv函式,file 是excel檔案名,to_file 是csv檔案名。 sep=';'以分號分隔的csv檔案;error_bad_lines=False 忽略錯誤行資料
def csv_to_xlsx(file, to_file):
data_csv = pd.read_csv(file, encoding='latin1', error_bad_lines=False, sep=';') # 讀取以分號為分隔符的csv檔案 sep作用為指定分隔符,默認在Windows系統系分隔符為逗號
data_csv.to_excel(to_file, sheet_name='data')
# 讀取一個目錄里面的所有檔案:
def read_path(path):
dirs = os.listdir(path)
return dirs
# 主函式
def main():
# 源檔案路徑
source = r'C:\Users\Desktop\CSV轉excel'
# 目標檔案路徑
ob = r'C:\Users\Desktop\CSV轉excel'
# 將源檔案路徑里面的檔案轉換成串列file_list
file_list = [source + '\\' + i for i in read_path(source)]
a = 0 # 串列索引csv檔案名稱放進j_list串列中,索引0即為第一個csv檔案名稱
j_list = read_path(source) # 檔案夾中所有的csv檔案名稱提取出來按順序放進j_list串列中
print("---->", read_path(source)) # read_path(source) 本身就是串列
print("read_path(source)型別:", type(read_path(source)))
# 建立回圈對于每個檔案呼叫excel_to_csv()
for it in file_list:
j = j_list[a] # 按照索引逐條將csv檔案名稱賦值給變數j
# 給目標檔案新建一些名字串列
j_mid = str(j).replace(".csv", "") # 將csv檔案名中的.csv后綴去掉
print("====", j_mid)
j_xlsx = ob + '\\' + j_mid + ".xlsx"
csv_to_xlsx(it, j_xlsx)
print("######", it)
a = a+1
if __name__ == '__main__':
main()
uj5u.com熱心網友回復:
data_csv print看一下內容,是不是這里已經亂了uj5u.com熱心網友回復:
是的,我在下面的這條代碼后面print data_csv,顯示出來的已經是亂碼了,
data_csv = pd.read_csv(file, encoding='latin1', error_bad_lines=False, sep=';') # 讀取以分號為分隔符的csv檔案 sep作用為指定分隔符,默認在Windows系統系分隔符為逗號
data_csv.to_excel(to_file, sheet_name='data')
print(data_csv)顯示出來是亂碼了
求教大神,要怎么改呀?謝謝了
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/214301.html
