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
相关产品推荐
相关产品推荐

