You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python爬虫保存CSV遇UnicodeEncodeError错误求解决方案

解决方案:UnicodeEncodeError 处理方法

错误原因:Windows环境下默认用cp1252编码写入文件,该编码不支持所有Unicode字符(比如你遇到的\u200e是左至右标记),导致编码失败。

以下是几种可行的解决办法,按优先级排序:

1. 打开文件时指定UTF-8编码(推荐)

这是最根本的解决方式,直接让文件支持所有Unicode字符,无需手动清理字符串:

直接用open函数写入

with open('abc.csv', 'w', encoding='utf-8', newline='') as f:
    for i in range(len(usernames)):
        username = usernames[i].text.strip()
        name = name_margin[i].text.strip()
        f.write(f"{username},{name}\n")

用csv模块写入(更规范,适合复杂CSV场景)

import csv
with open('abc.csv', 'w', encoding='utf-8', newline='') as f:
    writer = csv.writer(f)
    # 可选:写入表头
    writer.writerow(['username', 'name_margin'])
    for i in range(len(usernames)):
        writer.writerow([usernames[i].text.strip(), name_margin[i].text.strip()])

2. 优化字符串清理逻辑(备选)

如果因为某些原因无法指定文件编码,可以简化你之前的字符处理代码(原代码的encode-decode可以简化):

with open('abc.csv', 'w') as f:
    for i in range(len(usernames)):
        # 直接处理字符串,忽略无法编码的字符
        clean_username = usernames[i].text.strip().encode('utf-8', errors='ignore').decode('utf-8')
        clean_name = name_margin[i].text.strip().encode('utf-8', errors='ignore').decode('utf-8')
        f.write(f"{clean_username},{clean_name}\n")

注意:这种方式会丢弃无法编码的字符,可能丢失数据,仅在万不得已时使用。

内容的提问来源于stack exchange,提问作者rishabh11336

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 17:01:15