2017-07-27 64 views
-1

我想比较2个从excel文件导入的python unicode列表来计算它们的变量。比较从excel中导入的2个Python unicode列表

这是我的代码

import xlrd 
import tkFileDialog 

excel_file = tkFileDialog.askopenfilename(filetypes=[('excelfile', '*.xslx')], title = 'Choose a .xslx file') 

workbook = xlrd.open_workbook(excel_file) 
sheet = workbook.sheet_by_index(0) 

data = [sheet.col_values(i)[1:] for i in range(sheet.ncols) if sheet.col_values(i)[1]=='Difficulty'] 
data2 = [sheet.col_values(i)[1:] for i in range(sheet.ncols) if sheet.col_values(i)[1]=='Decision'] 

print data, data2 

hard_yes = 0 
hard_no = 0 
medium_yes = 0 
medium_no = 0 
easy_yes = 0 
easy_no = 0 

for i in zip(data, data2): 
    if i == ('Hard', 'Yes'): 
     hard_yes = hard_yes + 1 
    elif i == ('Hard', 'No'): 
     hard_no = hard_no + 1 
    elif i == ('Medium', 'Yes'): 
     medium_yes = medium_yes + 1 
    elif i == ('Medium', 'No'): 
     medium_no = medium_no + 1 
    elif i == ('Easy', 'Yes'): 
     easy_yes = easy_yes + 1 
    elif i == ('Easy', 'No'): 
     easy_no = easy_no + 1 

print hard_yes, hard_no, medium_yes, medium_no, easy_yes, easy_no 

我想要的值存储到变量。当两个列表都是硬编码的时候,我可以这样做,但是当我从excel中导入列表时,我无法存储这些值。

这是从上面的代码

[[u'Difficulty', u'Easy', u'Medium', u'Medium', u'Hard', u'Easy', u'Hard', u'Easy', u'Easy', u'Easy', u'Hard', u'Hard', u'Medium', u'Hard', u'Medium', u'Easy', u'Medium', u'Medium', u'Medium', u'Easy', u'Hard']] [[u'Decision', u'Yes', u'No', u'Yes', u'Yes', u'Yes', u'No', u'No', u'No', u'Yes', u'Yes', u'No', u'Yes', u'No', u'Yes', u'Yes', u'No', u'No', u'No', u'Yes', u'No']] 
0 0 0 0 0 0 

编辑输出:我刚刚意识到这是一个unicdoe列表,如何比较两个Unicode列表?或者如何正确地将一个unicode列表转换为一个字符串列表?

+0

尝试打印'i'的'为loop'内更换

for i in zip(data, data2): 

。 – Mel

+0

@打印清单 –

回答

0

问题出在datadata2列表中。它们实际上是列表的列表,而不是元素的列表。因此,使用zip,您正在遍历1个元素列表。

只是

for i in zip(data[0], data2[0]): 
+0

它的工作原理!非常感谢 –