【问题标题】:FInding Value from excel sheet in python从python中的excel表中查找值
【发布时间】:2016-04-21 07:59:10
【问题描述】:

我有一个 excel 表 (data.xlxs),其中包含 200 多行的以下数据模式。

NS71282379_67698209    123456001
NS71282379_56698765    123456002
NS71282379_67698209    123456003
.
.
.

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

【问题讨论】:

  • 这些值如何对应?您似乎说您在 Excel 工作表中有数据,您想用同一个 Excel 工作表中的相同数据替换这些数据。你能澄清一下吗?
  • 你想要所有行都这样吗?

标签: python xlrd lookup-tables


【解决方案1】:

您可以按范围(sheet.nrows)迭代Excel工作表并根据行号获取行值。下面的脚本逐行迭代Excel工作表并打印出匹配值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]

【讨论】:

    【解决方案2】:

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

    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"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-22
      • 2014-03-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多