python - python和openpyxl:如何替换excel表上新出现的日期?
问题描述
我有一个包含两列(A和B)数据的excel表,如下所示:
一个 | 乙 | (供参考) |
---|---|---|
苹果 | 橙 | (“情侣 1”) |
番茄 | 萝卜 | (“情侣 2”) |
香蕉 | 猕猴桃 | (“情侣 3”) |
橙 | 苹果 | (“情侣1”新出现) |
番茄 | 萝卜 | (《情侣2》新登场) |
沙拉 | 茄子 | (“情侣 4”) |
我想用à 0(零)替换同一“夫妇”的每一个新出现,就像这样:
一个 | 乙 | (供参考) |
---|---|---|
苹果 | 橙 | (“情侣 1”) |
番茄 | 萝卜 | (“情侣 2”) |
香蕉 | 猕猴桃 | (“情侣 3”) |
0 | 0 | |
0 | 0 | |
沙拉 | 茄子 | (“情侣 4”) |
我教过这样一个简单的代码就可以了:
import openpyxl
from openpyxl import *
import numpy
from numpy import *
wb = load_workbook("Desktop/programme/wb.xlsx")
ws = wb["Sheet"]
stop_row = ws.max_row + 1
for n1 in range(1,stop_row) :
for n2 in range(2,stop_row) :
item_a = ws.cell(row=n1, column=1).value
item_b = ws.cell(row=n1, column=2).value
item_1 = ws.cell(row=n2, column=1).value
item_2 = ws.cell(row=n2, column=2).value
if (item_a == item_1 and item_b == item_2) or (item_a == item_2 and item_b == item_1) :
ws.cell(row=n2, column=1).value = 0
ws.cell(row=n2, column=2).value = 0
但我得到的是:
一个 | 乙 | (供参考) |
---|---|---|
苹果 | 橙 | (“情侣 1”) |
0 | 0 | (“情侣 2”) |
0 | 0 | (“情侣 3”) |
0 | 0 | (“情侣1”新出现) |
0 | 0 | (《情侣2》新登场) |
0 | 0 | (“情侣 4”) |
知道为什么吗?
谢谢
解决方案
第一次迭代,n1 = 1 和 n2 = 1。值item_1
和item_a
将与该设置相同,因为它们指向同一个单元格。与item_2
和相同item_b
。也许你的第二个循环应该是range(n1 + 1, stop_row)
?如果 n1 + 1 大于 stop_row,请不要担心;它只是不会计算任何东西,而不是循环。
另外,请注意,如果这样做,则必须从 0 开始 n1,否则将永远不会考虑第一行。
推荐阅读
- python - Ebuild 文件格式的正则表达式
- c# - 在 xamarin.forms 中拍照后手机挂起
- java - 字符串拆分,过滤和加入单行java 8
- javascript - React-datasheet editorDialog 通过 dropDown click 关闭而不触发 onChange
- python - 如何使用 python 在 Rest API 中直接发布 json 数据
- javascript - 重新渲染组件的问题
- data-structures - 招聘问题 - 方法可视化问题?
- java - SonarLint 抛出 IllegalStateException -> 无法读取本地问题存储索引
- reactjs - 如何在反应中从列表中迭代?
- javascript - npm replace:用 npm 脚本替换多个文件中的文本的问题