def replace_excel(path, f): # 封装xls转换为xlsx ///done """ excel .xls 后缀 改成 .xlsx 后缀 path 文件夹路径 f 文件名字 带后缀 比如 aa.xls """ file_name_be, suff = os.path.splitext(f) # 路径进行分割,分别为文件路径和文件后缀 if suff == '.xls': # print('将对{}文件进行转换...'.format(f)) data = pd.DataFrame(pd.read_excel(path + '\\' + f)) # 读取xls文件 data.to_excel(path + '\\' + file_name_be + '.xlsx', index=False) # 格式转换 return file_name_be + '.xlsx' 改造下代码,写一段去除特殊符号,非法字符的正则表达式
时间: 2024-03-16 11:46:44 浏览: 103
readxl:将excel文件(.xls和.xlsx)读入R:linked_paperclips:
好的,下面是改造后的代码,将在转换文件时去除特殊符号和非法字符:
```python
import os
import re
import pandas as pd
def replace_excel(path, f):
""" 将 Excel .xls 后缀 改成 .xlsx 后缀,并去除特殊符号和非法字符
path: 文件夹路径
f: 文件名字,带后缀,例如 aa.xls
"""
file_name_be, suff = os.path.splitext(f) # 路径进行分割,分别为文件路径和文件后缀
if suff == '.xls':
# 读取 xls 文件
data = pd.DataFrame(pd.read_excel(path + '\\' + f))
# 替换特殊符号和非法字符
data = data.applymap(lambda x: re.sub(r'[\000-\010]|[\013-\014]|[\016-\037]', '', str(x)))
# 格式转换
data.to_excel(path + '\\' + file_name_be + '.xlsx', index=False)
return file_name_be + '.xlsx'
```
在上面的代码中,我们使用 `applymap` 方法对所有的单元格进行遍历,并使用正则表达式将每个单元格中的特殊符号和非法字符进行替换。 `applymap` 方法可以对 DataFrame 中的每个元素应用一个函数,返回一个新的 DataFrame。在这里,我们使用了 lambda 函数来进行替换。
注意,在使用正则表达式替换时,我们将每个单元格的值都转换为字符串类型,以避免出现类型错误。
阅读全文