Python pyExcelerator或xlrd-如何查找/搜索给定少数列数据的行?
Python与EXCEL通信。。。我需要找到一种方法,以便在一行中查找/搜索给定的列数据。现在,我一行一行地扫描整行。。。如果有诸如查找/搜索/替换之类的功能,它将非常有用。。。。我在pyExcelerator或xlrd模块中没有看到这些功能。。我不想使用Win32 COM模块!它使我的工具基于windows 通过Python查找/搜索Excel行。。。。有什么想法吗?“现在,我一行一行地扫描整个行” 怎么了?“搜索”——在电子表格上下文中——是非常复杂的。搜索值?搜索公式?向下搜索行,然后跨列搜索?仅搜索特定列?仅搜索特定行 电子表格不是简单的文本——简单的文本处理设计模式不适用 电子表格搜索很难,而且你做得很正确。没有比这更好的了,因为这很难 “现在,我正在逐个扫描整行” 怎么了?“搜索”——在电子表格上下文中——是非常复杂的。搜索值?搜索公式?向下搜索行,然后跨列搜索?仅搜索特定列?仅搜索特定行 电子表格不是简单的文本——简单的文本处理设计模式不适用Python pyExcelerator或xlrd-如何查找/搜索给定少数列数据的行?,python,excel,search,pyexcelerator,xlrd,Python,Excel,Search,Pyexcelerator,Xlrd,Python与EXCEL通信。。。我需要找到一种方法,以便在一行中查找/搜索给定的列数据。现在,我一行一行地扫描整行。。。如果有诸如查找/搜索/替换之类的功能,它将非常有用。。。。我在pyExcelerator或xlrd模块中没有看到这些功能。。我不想使用Win32 COM模块!它使我的工具基于windows 通过Python查找/搜索Excel行。。。。有什么想法吗?“现在,我一行一行地扫描整个行” 怎么了?“搜索”——在电子表格上下文中——是非常复杂的。搜索值?搜索公式?向下搜索行,然后跨列
电子表格搜索很难,而且你做得很正确。没有比这更好的了,因为这很难 你不能。这些工具不提供搜索功能。您必须在循环中迭代数据并自己搜索。对不起。你不能。这些工具不提供搜索功能。您必须在循环中迭代数据并自己搜索。抱歉。使用PyExcelator,您可以通过首先查找最大行和列索引(并存储它们)来进行简单的优化,这样您就可以对范围(maxcol+1)中的i迭代
(行,i)
,而不是迭代所有字典键。这可能是您得到的最好结果,除非您希望遍历并建立一个字典映射值到一组键
顺便说一句,如果您使用PyExcellator编写电子表格,请注意它有一些bug。我遇到过一个涉及写入介于230和232(或大约)之间的整数的例子。现在很难联系到原作者,因此
xlwt
是修复(已知)bug的工具。对于编写电子表格,它是PyExcellator的替代品;您可以将xlwt作为pyExcelerator导入
,而不做任何更改。不过,它不读取电子表格。使用PyExcelator,您可以通过首先查找最大的行和列索引(并存储它们)来进行简单的优化,这样您就可以对范围(maxcol+1)内的i迭代(行,i)
,而不是迭代所有字典键。这可能是您得到的最好结果,除非您希望遍历并建立一个字典映射值到一组键
顺便说一句,如果您使用PyExcellator编写电子表格,请注意它有一些bug。我遇到过一个涉及写入介于230和232(或大约)之间的整数的例子。现在很难联系到原作者,因此
xlwt
是修复(已知)bug的工具。对于编写电子表格,它是PyExcellator的替代品;您可以将xlwt作为pyExcelerator导入
,而不做任何更改。不过,它不看电子表格。@johnfouhy:[我是xlwt的维护者,也是xlrd的作者]
pyExcelerator的电子表格读取部分遭到了严重的抨击,以至于它完全从xlwt中消失了。要使用Python 2.1+读取由Excel 2.0至11.0(Excel 2003)或兼容软件创建的任何XLS文件,请使用
xlrd不需要“简单优化”:
import xlrd
book = xlrd.open_workbook("foo.xls")
sheet = book.sheet_by_number(0) # alternatively: sheet_by_name("Budget")
for row_index in xrange(sheet.nrows):
for col_index in xrange(sheet.ncols):
@约翰·福伊:[我是xlwt的维护者,也是xlrd的作者] pyExcelerator的电子表格读取部分遭到了严重的抨击,以至于它完全从xlwt中消失了。要使用Python 2.1+读取由Excel 2.0至11.0(Excel 2003)或兼容软件创建的任何XLS文件,请使用 xlrd不需要“简单优化”:
import xlrd
book = xlrd.open_workbook("foo.xls")
sheet = book.sheet_by_number(0) # alternatively: sheet_by_name("Budget")
for row_index in xrange(sheet.nrows):
for col_index in xrange(sheet.ncols):
有趣的额外信息。谢谢。有趣的额外信息。谢谢。在约翰·梅辛的帮助下,我去年用xlrd创建了一个应用程序(再次感谢约翰!)。在约翰·梅辛的帮助下,我去年用xlrd创建了一个应用程序(再次感谢约翰!)。他在这里很在行。