excel电子表格上的Python xlrd迭代省略了单元格值
这里需要帮助,伙计们 这是我的代码:excel电子表格上的Python xlrd迭代省略了单元格值,python,iteration,xlrd,xlutils,Python,Iteration,Xlrd,Xlutils,这里需要帮助,伙计们 这是我的代码: 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 tr
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个条目。数据似乎没有从不同的行和列中忽略随机值的模式。任何帮助都将不胜感激
谢谢,
Will一个集合将为您提供一个无序的唯一值集合。如果电子表格中有重复的单元格,则只有第一个单元格将添加到集合中,其余单元格将被丢弃
根据您的评论,听起来您只是在进行一些调试,但是如果您真的需要计算已解包的单元格,一个选项是首先将它们附加到列表中,然后再将其转换为集合
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
我会说,与其创建一个列表,然后将其转换为一个集合,不如先初始化一个空集,然后继续向其中添加元素。它将自动处理设置的功能。这将提高性能效率
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
需要澄清的是:您了解集合和列表之间的区别吗?您确定集合是合适的数据结构吗?集合将无序并消除重复项。我希望使用集合,以便可以使用set.differenceset3=set1-set2查找不在一个和另一个中的字符串,然后将这些值打印到另一个sheet@JoeHolloway谢谢,我没有意识到将其保存为一个集合会删除重复项,并且我的一个列具有相同的值,所以它删除了所有12个,这就是为什么我的总数是关闭的。谢谢你你的陈述是正确的,但我认为你不理解被问到的问题。您的“解决方案”是相同的代码,问题中给出了不同的变量名。我的回答只是为了说明列表和集合在计数方面的差异,而不是作为如何生成所需数据结构的集合的建议。提问者已经这样做了,但被结果弄糊涂了。