python 读取excel内容为中文的处理

本文介绍了在Python中读取包含中文的Excel文件时遇到的Unicode编码问题,以及如何解决输出乱码的错误。通过提供多个参考资料链接,读者可以学习如何正确处理Excel中的中文数据,避免'utf8'解码错误。

地址1:https://my.oschina.net/CeShiXiaoSongShu/blog/346366

地址2:http://www.cnblogs.com/blueel/archive/2012/08/21/2649590.html

地址3:http://www.cnblogs.com/work115/p/5924446.html

使用python读取excel内容并把内容写人文件时遇到问题


读取excel的内容,当excel的内容有中文时,输出为Unicode编码格式,当把数据unicode化后,输出为乱码

错误信息:

'utf8' codec can't decode byte 0xe5 in position 0: unexpected end of data


dome:

read_excel.py

# !/usr/bin/env python
# -*- coding: utf-8 -*-

import xlrd
from commonality import logg
import os

log = logg.log_config()
o_path = os.getcwd().encode('utf-8')


# 获取excel中的数据
def excel_data(files, index=0):
    # 读取配置文件base下的excel_name值
    # files = read_config.get_pmt('base', excel_name)
    # 定义excel所有的数据excel_list
    excel_list = []
    if files != '':
        try:
            # 打开Excel文件读取数据
            data = xlrd.open_workbook(files)
            # 获取第一个工作表
            table = data.sheet_by_index(index)
            # 获取行数
            nrows = table.nrows
            # 获取列数
            ncols = table.ncols
            for row in range(1, nrows):
                # 定义每行excel_rows
                excel_rows = []
                for col in range(ncols):
                    # 获取单元格数据
                    cell_value = table.cell(row, col).value
                    # 把数据追加到excel_rows中
                    excel_rows.append(cell_value.encode('UTF-8'))
                # 把数据追加到excel_list中
                excel_list.append(excel_rows)
                # return excel_list
            log.info('获取'+files+'文件中的数据成功。')
        except Exception, e:
            log.error(e)
    else:
        log.info(u'excel数据获取失败,excel目录为空')
    return excel_list

对获取到的数据进行处理

dome2:
megan_excel.py

import sys
reload(sys)
# 设定了输出的环境为utf8
sys.setdefaultencoding('utf-8')
# 读取的excel文件路径
files = 'login.xls'
# 调用读取方法
excel_data = read_excel.excel_data(files)

pmt = []
if len(excel_data[0]) > 0:
    for i in range(len(excel_data[0])):
        pmt = excel_data[0][i]
        for j in range(len(pmt)):
            # 对字符串进行unicode化
            pmt[j] = unicode(pmt[j], errors='ignore')
print pmt



评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值