1

在这里需要一些帮助,

这是我的代码:

   import xlutils
   import xlrd
   import os
   import sys
   datafile = r'C:\\someexcelfileediting.xlsx'
   workbook = xlrd.open_workbook(datafile)
   stone = workbook.sheet_by_name(input('What is the name of the sheet you are trying to reference?  ').upper())
   paper = workbook.sheet_by_name(input('what sheet would you like to check?  ').upper())
   def check_Base():
   set2 = set()
   for row in range (0, paper.nrows):    
       for col in range(0, paper.ncols):       
           set2.add(paper.cell_value(row, col))
   print (len(set2))
   print (set2)
check_Base()

我最终得到的是它正在迭代的 excel 表的 91 个值中的 79 个,我不明白为什么它不包括文件中的 12 个条目。数据似乎没有一种模式,它忽略了来自不同行和列的随机值。任何帮助,将不胜感激。

谢谢,威尔

4

2 回答 2

1

Aset将为您提供一个无序的唯一值集合。如果您的电子表格中有重复的单元格,则只会将第一个单元格添加到集合中,其余的将被丢弃。

根据您的评论,听起来您只是在进行一些调试,但是如果您确实需要计算已解压的单元格,则一种选择是append先将它们列在列表中,然后再将其转换为集合。

mylist = []
for row in range (0, paper.nrows):    
    for col in range(0, paper.ncols):       
        mylist.append(paper.cell_value(row, col))

print len(mylist) # 91

myset = set(mylist)

print len(myset) # 79
于 2015-03-12T19:26:09.477 回答
-1

我想说,与其创建一个列表然后将其转换为一个集合,不如先初始化一个空集合并继续向其中添加元素。它会自动处理设置的功能。这将更加有效。

myset= set()
for row in range (0, paper.nrows):    
    for col in range(0, paper.ncols):       
        myset.add(paper.cell_value(row, col))

print len(myset) # 79
于 2019-11-25T12:14:06.563 回答