在python中从excel表中查找值

2024-09-27 07:30:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个excel工作表(data.xlxs),它有以下200多行的数据模式。

NS71282379_67698209    123456001
NS71282379_56698765    123456002
NS71282379_67698209    123456003
.
.
.

现在在我的脚本中,我试图找到123456003的对应值作为NS71282379_67698209。在我的脚本中,我想用excel工作表中的值替换123456003。 我使用xlrd导入工作表,但是没有找到任何方法可以轻松地找到相应的值。 我怎么才能这么聪明呢?


Tags: 数据方法脚本data模式excelxlrdxlxs
2条回答

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

$cat测试.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测试.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"

相关问题 更多 >

    热门问题