|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
我想通过这个方法把excel表格中的非打印字符去掉,但是当我使用这个方法的时候发现他并不会把所有的非打印字符去掉,无论怎么替换,最后总是有一个askii码为28的值在。
上面这个图片是我excel表格中的内容,后面的数字式函数code得到的前面askii的值
这个图片是我修改后excel表格中的内容,从后面给的数字能看出来他并没有完全替换掉所有非打印字符
- def clean_data_and_save(file_path):
- try:
- # 加载现有的 Excel 文件
- workbook = load_workbook(file_path)
- # 获取工作簿中的所有工作表
- all_worksheets = workbook.worksheets
- # 正则表达式模式,用于匹配非打印字符(ASCII 控制字符)
- pattern = r'[\x00-\x1F\x7F]'
- # 遍历所有工作表
- for ws in all_worksheets:
- # 遍历当前工作表的所有单元格并清洁数据
- for row in ws.iter_rows():
- for cell in row:
- if cell.value:
- # 将单元格值转换为字符串
- cleaned_value = re.sub(pattern, '*', str(cell.value))
- cell.value = cleaned_value
- # 提取原始文件名和扩展名
- original_file_name, extension = os.path.splitext(os.path.basename(file_path))
- # 在原始文件名后添加 '_correct' 作为新的文件名
- new_file_name = original_file_name + '_correct' + extension
- # 获取文件的目录路径
- directory_path = os.path.dirname(file_path)
- # 构建新的文件路径,包含修改后的文件名
- new_file_path = os.path.join(directory_path, new_file_name)
- # 将更改后的数据保存到新的文件路径
- workbook.save(new_file_path)
- # 返回新文件的路径
- return new_file_path
- except Exception as e:
- # 处理任何异常
- print(f"错误:{e}")
- return None
复制代码
|
|