无法将替换的字符串保存到工作簿中
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 循环。您应该只在完成所有更改后保存它,而不是每次更改单元格时都保存它。
替换 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 循环。您应该只在完成所有更改后保存它,而不是每次更改单元格时都保存它。