代码错误:import unicodedata as ud from openpyxl import load_workbook filenames = [f for f in os.listdir('.') if f.endswith('.xlsx')] # 指定表格文件名列表 dfs = [] for file in files: sheets = pd.read_excel(file, sheet_name=None) # 使用列表推导式读取多个表格 workbooks = [load_workbook(filename) for filename in filenames] # 遍历每个工作表 for workbook in workbooks: for sheetname in workbook.sheetnames: sheet = workbook[sheetname] # 遍历每个单元格 for row in sheet.iter_rows(): for cell in row: # 判断单元格是否为字符串类型 if isinstance(cell.value, str): # 将全角字符转换为半角字符 cell.value = ud.normalize('NFKC', cell.value) # 保存修改后的 Excel 文件 for i, workbook in enumerate(workbooks): filename = filenames[i].replace(".xlsx", "-1.xlsx") workbook.save(filename)
时间: 2024-01-28 21:05:45 浏览: 74
这段代码有一个比较明显的错误,第4行的 `files` 变量没有定义,应该改为 `filenames`,即:
```
filenames = [f for f in os.listdir('.') if f.endswith('.xlsx')] # 指定表格文件名列表
dfs = []
for file in filenames: # 修改此处的变量名
sheets = pd.read_excel(file, sheet_name=None) # 使用列表推导式读取多个表格
workbooks = [load_workbook(filename) for filename in filenames] # 遍历每个工作表
# ...后面的代码不变
```
相关问题
修改代码错误,import unicodedata as ud from openpyxl import load_workbook # 指定表格文件名列表 filenames = ['附件一:2022年12月末存量公司客户管户认领情况表__海沧.xlsx.xlsx', '附件三:2022年12月末存量机构客户管户认领情况表__海沧支行.xlsx', '附件二:2023年3月末新拓公司客户管户认领情况表__海沧.xlsx', '附件四:2023年3月末新拓机构客户管户认领情况表__海沧支行.xlsx' ] # 使用列表推导式读取多个表格 workbooks = [load_workbook(filename) for filename in filenames] # 遍历每个工作表 for workbook in workbooks: for sheetname in workbook.sheetnames: sheet = workbook[sheetname] # 遍历每个单元格 for row in sheet.iter_rows(): for cell in row: # 判断单元格是否为字符串类型 if isinstance(cell.value, str): # 将全角字符转换为半角字符 cell.value = ud.normalize('NFKC', cell.value) # 保存修改后的 Excel 文件 for i, workbook in enumerate(workbooks): filename = filenames[i].replace(".xlsx", "-1.xlsx") workbook.save(filename)
在你的代码中,第一个文件名后面多了一个 `.xlsx`,需要把它去掉。同时,文件名中包含中文字符,需要使用 UTF-8 编码来避免出现编码错误。修改后的代码如下:
```python
import unicodedata as ud
from openpyxl import load_workbook
# 指定表格文件名列表,使用 UTF-8 编码
filenames = [
'附件一:2022年12月末存量公司客户管户认领情况表__海沧.xlsx',
'附件三:2022年12月末存量机构客户管户认领情况表__海沧支行.xlsx',
'附件二:2023年3月末新拓公司客户管户认领情况表__海沧.xlsx',
'附件四:2023年3月末新拓机构客户管户认领情况表__海沧支行.xlsx'
]
# 使用列表推导式读取多个表格
workbooks = [load_workbook(filename, read_only=True) for filename in filenames]
# 遍历每个工作表
for workbook in workbooks:
for sheetname in workbook.sheetnames:
sheet = workbook[sheetname]
# 遍历每个单元格
for row in sheet.iter_rows():
for cell in row:
# 判断单元格是否为字符串类型
if isinstance(cell.value, str):
# 将全角字符转换为半角字符
cell.value = ud.normalize('NFKC', cell.value)
# 保存修改后的 Excel 文件
for i, workbook in enumerate(workbooks):
filename = filenames[i].replace(".xlsx", "-1.xlsx")
workbook.save(filename)
```
这样修改后应该就可以正常运行了。
python检查代码错误:from openpyxl import load_workbook import unicodedata # 加载 Excel 文件 workbook = load_workbook(filename='统计.xlsx') # 指定表格文件名列表 filenames = ['file1.xlsx', 'file2.xlsx', 'file3.xlsx'] # 使用列表推导式读取多个表格 workbooks = [load_workbook(filename) for filename in filenames] # 遍历每个工作表 for sheetname in workbooks.sheetnames: sheet = workbooks[sheetname] # 遍历每个单元格 for row in sheet.iter_rows(): for cell in row: # 判断单元格是否为字符串类型 if isinstance(cell.value, str): # 将全角字符转换为半角字符 cell.value = unicodedata.normalize('NFKC', cell.value) # 保存修改后的 Excel 文件 workbooks.save(filename='example1.xlsx')
以下是经过修正后的代码:
```python
import unicodedata
from openpyxl import load_workbook
# 加载 Excel 文件
workbook = load_workbook(filename='统计.xlsx')
# 指定表格文件名列表
filenames = ['file1.xlsx', 'file2.xlsx', 'file3.xlsx']
# 使用列表推导式读取多个表格
workbooks = [load_workbook(filename) for filename in filenames]
# 遍历每个工作表
for workbook in workbooks:
for sheetname in workbook.sheetnames:
sheet = workbook[sheetname]
# 遍历每个单元格
for row in sheet.iter_rows():
for cell in row:
# 判断单元格是否为字符串类型
if isinstance(cell.value, str):
# 将全角字符转换为半角字符
cell.value = unicodedata.normalize('NFKC', cell.value)
# 保存修改后的 Excel 文件
workbook.save(filename='example1.xlsx')
```
修正后,代码中的问题包括:
1. `from openpyxl import load_workbook import unicodedata` 这一行代码中应该将 `import unicodedata` 移到 `from openpyxl import load_workbook` 的下一行。
2. `workbooks.sheetnames` 应该修改为 `workbook.sheetnames`,因为在遍历时,变量名 `workbook` 代表的是一个具体的 Excel 表格对象。
3. 最后一行代码应该移动到外层循环之后,否则会将多个 Excel 表格的内容保存到同一个文件中。
阅读全文