2016-10-01 82 views
0

我有一个Excel文件,其中包含两列,第一个是中文,第二个是链接。 我尝试了两种我在这里找到的方法。但它不起作用,我无法在控制台中打印值,我将设置(pycharm)中的编码变量更改为U8,但仍然无效。 我用熊猫& xlrd libs,两者都没有工作,但它为其他人张贴。 这是我当前的代码:从excel文件读取汉字python3

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

回答

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) 

检查它,我贴在硒司机的第一个结果(因为我要去无论如何使用它)

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

它的作品就像一个魅力!

1

这不是关于编码,你没有访问正确的行。

就行了,你要开始的1而不是0
for row in range(1, number_of_rows):

为什么尝试for row in range(number_of_rows):