Python for循环处理Excel数据如何跳过错误继续运行?
代码调整方案
你当前代码的问题是try...except包裹了整个循环逻辑,只要某一行触发异常就会直接跳出整个循环,终止执行。只需要把异常捕获的范围缩小到循环内部单条数据的处理逻辑即可,具体调整如下:
调整后完整代码
import re import pandas as pd counti = 0 # 替换为你的原Excel文件路径 df = pd.read_excel("源文件路径.xlsx") processed_content = [] def removepunc(firstlist): global counti for words in firstlist: try: # 提前判断空值/非字符串类型,规避空行报错 if pd.isna(words) or not isinstance(words, (str, bytes)): cleanstr = "" else: cleanstr = re.sub(r'[^\w\s]', ' ', words) counti += 1 print(counti,":", cleanstr) processed_content.append(cleanstr) except: # 触发异常时跳过当前行,继续执行下一轮循环 processed_content.append("") continue # 所有内容处理完成后统一写入Excel,避免循环中反复写入覆盖内容、损耗性能 df["清理后内容"] = processed_content df.to_excel("test.xlsx", index=False) return counti # 替换为你需要处理的Excel列名 removepunc(df["待处理列名"].tolist())
核心调整点
- 将
try...except从包裹整个循环改为放在循环内部,仅覆盖单条数据的处理逻辑,异常触发后只会跳过当前行,不会终止整体运行 - 新增空值、非字符串类型的前置判断,提前规避空行报错,也可按需自定义空行的填充内容
- 把Excel写入逻辑从循环内移到全部数据处理完成后,解决原代码循环写入会反复覆盖文件内容的问题,同时提升运行效率
内容的提问来源于stack exchange,提问作者Tennyson
相关产品推荐
相关产品推荐

