在这里需要一些帮助,
这是我的代码:
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个条目。似乎不是数据的模式,它忽略了来自不同行和列的随机值。任何帮助,将不胜感激。
谢谢, 将
答案 0 :(得分:1)
set
将为您提供无序的唯一值集合。如果电子表格中有重复的单元格,则只会将第一个单元格添加到集合中,其余单元格将被丢弃。
根据你的评论,听起来你只是做一些调试,但如果你真的需要计算你已经解压缩的单元格,一个选项是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
答案 1 :(得分:0)
我会说,与其创建列表然后将其转换为集合,不如先初始化一个空集合并继续向其添加元素。它会自动处理设置的功能。这样会提高性能。
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