无法将替换的字符串保存到工作簿中

Unable to save the replaced string into the workbook

替换 workbook.the 中的字符串后,被替换的字符串未反映在工作簿中。

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" 包含我想要的确切值。

现在,您所做的只是将单元格内容读入一个变量,然后更改该变量。 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 没有做任何事情。它所做的只是 return 一个匹配对象,您甚至没有检查它的结果。如果你想有条件地用“1pc”替换"Safety",你可以简单地删除这两行:

str_input1 = r"Safety"
re.search(str_input1 ,str(cv))

编辑:正如评论中指出的那样,我已将 wb.save 移出 for 循环。您应该只在完成所有更改后保存它,而不是每次更改单元格时都保存它。