在 python excel sheet 中查找值

FInding Value from excel sheet in python

我有一个 excel sheet (data.xlxs),具有以下超过 200 行的数据模式。

NS71282379_67698209    123456001
NS71282379_56698765    123456002
NS71282379_67698209    123456003
.
.
.

现在在我的脚本中,我试图找到 123456003 作为 NS71282379_67698209 的对应值。在我的脚本中,我想用 excel sheet 中的值替换 123456003。 我使用 xlrd 导入 sheet 但没有找到任何方法可以轻松让我找到相应的值。 我怎样才能巧妙地做到这一点?

您可以按范围 (sheet.nrows) 迭代 Excel sheet 并根据行号获取行值。下面的脚本逐行迭代 Excel sheet 并打印出匹配值 123456003 的行。您可以修改它以满足您的要求

$cat test.py

import xlrd

def open_file(path):
    wb = xlrd.open_workbook(path)
    sheet = wb.sheet_by_index(0)


    for row_num in range(sheet.nrows):
        row_value = sheet.row_values(row_num)
        if row_value[1] == 123456003:
            print row_value

if __name__ == "__main__":
    path = "data.xlsx"
    open_file(path)

$python test.py

[u'NS71282379_67698209', 123456003.0]

您必须遍历行并找到您有兴趣更改的行。像这样:

for r in xrange(sheet.nrows):
  row = sheet.row(r)
  if row[0].value == "NS71282379_67698209":
    row[1].value = "new value"
    break

如果您需要重复执行此操作,您可以构建一个从第一列值到第二列单元格的映射:

cells = dict((row[0].value, row[1])
             for row in (sheet.row(r) for r in xrange(sheet.nrows)))
cells["NS71282379_67698209"].value = "new value"