使用 Python 从值的交集中检索 Excel 表中的值
Posted
技术标签:
【中文标题】使用 Python 从值的交集中检索 Excel 表中的值【英文标题】:Retrieving value from Excel table from an intersection of values using Python 【发布时间】:2011-11-23 09:46:23 【问题描述】:我在 Excel 中有一个表格,我希望能够读取它(我知道如何实现这一点),但也告诉 Python,如果 d、D 和 B 有某些值,让它返回维度值在我的程序中作为变量的第一行。我已经阅读了有关十字路口的各种帖子,但我不确定它们是否是我正在寻找的,因此我决定提出自己的问题。
我的 Excel 表格格式如下(只是一个小例子,因为我无法发布图片):
Dimensions
d D | 17 27 37 47 17-47
| B | rsmin
0.6 2 0.8 - - - 0.05
1 2.5 1 - - - 0.05
1.5 3 1 - 1.8 - 0.05
2 4 1.2 - 2 - 0.05
如果我举个例子,我有一个 d = 2、D = 4(这两个值将始终在同一行)和 B = 2。因此,我想将值 Dimension = 37 返回到我的程序。我还有一个问题,我有几个工作表要阅读,所以我将此表称为 Table1,我必须首先通读所有工作表,每个工作表在同一个 .xls 文件中包含一个表。
【问题讨论】:
如果你有d = 2,D = 4,B = 1.2,你想返回17吗?如果你有 d = 2、D = 4 和 B = 99,你想要返回什么?None
?
我只想返回表格中的内容。因此,如果 d = 2、D = 4 和 B = 1.2,是的,我想返回 17。B 只能是某些值,并且在大多数情况下应该返回一个有效的答案而不是无。
【参考方案1】:
以下是根据您对所需内容的猜测来搜索您的表格的方法。您应该能够自己完成 5 表循环特技。
def search(table_iterator, d, D, B):
headings = next(table_iterator)
junk = next(table_iterator)
key = [d, D]
for row in table_iterator:
if row[0:2] != key: continue
for index, value in enumerate(row[2:-1]):
if value == B:
return headings(2 + index)
return None
在评论中提出问题后更新:
"""这应该返回我想要的维度值?"""
是的,应该。但这是一种通用方法。我不会从字面上回答“给我密码”的问题。您必须做一些工作,要么编写一个适合您正在读取表的工具(可能是 xlrd)的“table_iterator”,要么将其视为伪代码,您将其作为指导并完全重写以适应工具。
"""最后,我将所有表格编译成一个 .xls 文档,但使用了多个工作表。有没有一种特殊的方法可以搜索所有工作表,然后应用此代码?"""
正如我所说,您应该能够自己完成 5 表循环特技。搜索所有工作表并然后应用此代码似乎是一种奇怪的方法。您需要遍历工作表,搜索每个工作表,直到找到匹配的行。
【讨论】:
这应该返回我想要的维度值?非常感谢 =) 最后,我将所有表格编译成一个 .xls 文档,但使用了多个工作表。有没有一种特殊的方法可以让我搜索所有工作表,然后应用此代码?以上是关于使用 Python 从值的交集中检索 Excel 表中的值的主要内容,如果未能解决你的问题,请参考以下文章