【问题标题】:python add items to list and stop when you get an empty valuepython将项目添加到列表并在您获得空值时停止
【发布时间】:2016-08-03 17:29:41
【问题描述】:

我有一个正在阅读的 excel 文档,它的行数未知,我想将每一行以及 A B 和 C 列的三个值添加到一个列表中,然后在我没有达到任何值时停止。然后我想对列表中的每个项目运行一个操作。

如果有人可以提供帮助,我对if/for loops 感到很糟糕。

下面是将参数 3 作为工作簿和工作表加载。我需要从A61 行开始,然后将A61,B61,C61 添加到列表中,然后继续进行,直到 A 不管是 = 无。

好吧,我到此为止了,现在如何为行中的每个项目运行命令?

if len(sys.argv) > 3:
wb = xlrd.open_workbook(sys.argv[3])
sheet = wb.sheet_by_index(0)
first_kvm_ip = str(sheet.cell_value(34,1))
last_kvm_ip = str(sheet.cell_value(35,1))
kvm_netmask = str(sheet.cell_value(36,1))
rows = sheet.nrows
curr_row = 52
while (curr_row < rows - 1):
    curr_row += 1
    row1 = int(sheet.cell_value(curr_row,0))
    row2 = str(sheet.cell_value(curr_row,1))
    vlanls1.append(row1)
    vlanls2.append(row2)

我想为 row1 中的每个项目运行一个命令 vlan create(row1,row2)

我假设我需要一个 for i 迭代。我只是需要帮助。

我需要为 row1 和 row2 的每次迭代运行此命令

mo = FabricVlan(parent_mo_or_dn="fabric/lan", sharing="none", name=row2,         id=row1, mcast_policy_name="", policy_owner="local", default_net="no",     pub_nw_name="", compression_type="included")
handle.add_mo(mo)

好吧,我想我终于明白了。谢谢大家的帮助。

if len(sys.argv) > 3:
    wb = xlrd.open_workbook(sys.argv[3])
sheet = wb.sheet_by_index(0)
first_kvm_ip = str(sheet.cell_value(34,1))
last_kvm_ip = str(sheet.cell_value(35,1))
kvm_netmask = str(sheet.cell_value(36,1))
rows = sheet.nrows
curr_row = 52
while (curr_row < rows - 1):
    curr_row += 1
    row1 = int(sheet.cell_value(curr_row,0))
    row2 = str(sheet.cell_value(curr_row,1))
    vlanls1.append(row1)
    vlanls2.append(row2)
for x,y in zip(vlanls1,vlanls2):
    mo = FabricVlan(parent_mo_or_dn="fabric/lan", sharing="none", name=y,   id=x, mcast_policy_name="", policy_owner="local", default_net="no",       pub_nw_name="", compression_type="included")
    handle.add_mo(mo)

【问题讨论】:

  • 到目前为止你都尝试过什么?您是否尝试过在 google 或 stackoverflow 上查找类似的读取 excel 文件的问题??
  • 当然,在放弃之前一直在寻找大约 3-4 小时。它没有读取我真正需要帮助的 excel 文件,而是将数据添加到列表中并执行列表中的项目数量,然后停止。

标签: python python-3.x if-statement for-loop


【解决方案1】:

worksheet.rows 返回所有行的列表,无论有多少行。该列表中的每一行本身就是该行中单元格的列表。知道了这一点,就可以很容易地实现一个 for 循环,该循环遍历每一行并将前三个单元格附加到一个新列表中。

这段代码应该可以解决问题。

myList = []
for row in sheet.rows:
    myList.append([row[0],row[1],row[2]])

我确实建议您阅读 openpyxl 文档,它会避免您遇到一些麻烦。另外,如果您知道自己遇到问题,请阅读 for 循环的工作方式:)

http://openpyxl.readthedocs.io/en/default/index.html

http://www.tutorialspoint.com/python/python_for_loop.htm

【讨论】:

  • 你能把它贴在你原来帖子的末尾吗?我不知道在这个狭窄的空间里发生了什么哈哈
猜你喜欢
  • 2019-11-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-28
  • 1970-01-01
相关资源
最近更新 更多