从excel文件中读取中文字符python3

时间:2016-10-01 14:47:28

标签: python excel

我有一个包含两列的Excel文件,第一列是中文,第二列只是一个链接。 我尝试了两种我在这里找到的方法。但它没有工作,我无法在控制台中打印该值,我将设置(pycharm)中的编码变量更改为U8,仍然无法正常工作。 我用过Pandas& xlrd libs,虽然它适用于发布的其他人,但都没有工作。 这是我目前的代码:

from xlrd import open_workbook
class Arm(object):
    def __init__(self, id, dsp_name):
        self.id = id
        self.dsp_name = dsp_name

    def __str__(self):
        return("Arm object:\n"
               "  Arm_id = {0}\n"
               "  DSPName = {1}\n"
               .format(self.id, self.dsp_name))

if __name__ == '__main__':

    wb = open_workbook('test.xls')
    for sheet in wb.sheets():
        print(sheet)
        number_of_rows = sheet.nrows
        number_of_columns = sheet.ncols

        items = []

        rows = []
        for row in range(1, number_of_rows):
            values = []
            for col in range(number_of_columns):
                value = str(sheet.cell(row, col).value)
                for a in value:
                    print('\n'.join([a]))
                values.append(value)

                print(value)
    for item in items:
        print (item)
        print("Accessing one single value (eg. DSPName): {0}".format(item.dsp_name))
        print
显然它不起作用,我只是在放弃之后搞砸了它。 档案:http://www59.zippyshare.com/v/UxITFjis/file.html

2 个答案:

答案 0 :(得分:1)

它与编码无关,您无法访问正确的行。

在第24行 for row in range(1, number_of_rows):

你为什么要从1而不是0开始。
尝试for row in range(number_of_rows):

答案 1 :(得分:0)

我遇到的问题实际上并不是在阅读中文字符!我的问题是我们在控制台打印。 我认为打印编码器工作正常,我只是没有读取字符,但这段代码工作正常:

from xlrd import open_workbook

wb = open_workbook('test.xls')
messages = []
links = []

for sheet in wb.sheets():
    number_of_rows = sheet.nrows
    number_of_columns = sheet.ncols
    for row in range(1, number_of_rows):
        i = 0
        for col in range(number_of_columns):
            value  = (sheet.cell(row,col).value).encode('gbk')
            if i ==0:
                messages.append(value)
            else:
                links.append(value)
            i+=1



print(links)

要检查它,我将第一个结果粘贴到selenium驱动程序中(因为我还是要使用它)

element = driver.find_element_by_class_name('email').send_keys(str(messages[0],'gbk'))

它就像一个魅力!