在工作簿中替换字符串之后。替换的字符串未反映在工作簿中。
import os, sys, re
from re import *
from openpyxl import *
f='C:/Python3/CODES/output.xlsx'
wb = load_workbook(f)
for sheet in wb:
#print ("\n")
print ("checking sheet:", sheet)
for row in sheet.iter_rows(min_row=0,max_row=2):
for col in sheet.iter_cols(min_col=0,max_col=1):
for cell in row:
cv=cell.value
str_input1 = r"Safety"
re.search(str_input1 ,str(cv))
rep = str(cv).replace("Safety","1pc")
wb.save('C:/Python3/CODES/output10.xlsx')
无错误信息。 “ rep”包含我想要的确切值。
答案 0 :(得分:0)
现在,您要做的就是将单元格内容读入一个变量,然后更改该变量。 cv
不是对该单元格的引用,您正在创建一个新字符串。
代码中的最后一个for
循环应读取如下内容:
for cell in row:
cv=cell.value
str_input1 = r"Safety"
re.search(str_input1 ,str(cv))
rep = str(cv).replace("Safety","1pc")
cell.value = rep # Add this line
...
# This should not be in your loop
wb.save('C:/Python3/CODES/output10.xlsx')
值得注意的另一件事是您的re.search
没有做任何事情。它所做的只是返回一个match对象,您甚至都没有检查它的结果。如果要有条件地将“安全”替换为“ 1pc”,则只需删除以下两行:
str_input1 = r"Safety"
re.search(str_input1 ,str(cv))
编辑:正如评论中所指出的,我已经将wb.save
从for循环中移出了。您只应在进行所有更改后保存它,而不是每次更改单元格时都保存。