Python网页爬取存文件遇Unicode编码及文件名问题求助
问题分析与解决
问题1:UnicodeEncodeError编码错误
原代码未指定文件编码,Windows系统默认使用charmap编码,无法处理像\u266a(音乐符号♪)这类特殊Unicode字符,导致报错。
解决方法:
打开文件时明确指定encoding='utf-8',确保所有Unicode字符都能正确编码:
with open(title+'.txt', 'w', encoding='utf-8') as file: file.write(plot) file.write(transcript)
问题2:用title命名的文件在记事本打开为空
这是因为从网页获取的title文本中包含Windows文件名不允许的特殊字符(比如冒号:、斜杠/等),虽然代码无报错,但实际文件未被正确创建,或文件名不符合系统规范,导致记事本无法正常读取。
解决方法:
清理title中的非法字符,替换为合法字符(如下划线_):
# 定义Windows文件名非法字符集合 invalid_chars = '<>:"/\\|?*' # 替换非法字符为下划线 clean_title = ''.join(['_' if c in invalid_chars else c for c in title]) # 使用清理后的文件名写入 with open(clean_title+'.txt', 'w', encoding='utf-8') as file: file.write(plot) file.write(transcript)
若记事本打开仍有乱码,可通过「文件」→「打开」选择该txt文件,编码选择「UTF-8」即可正常显示内容。
内容的提问来源于stack exchange,提问作者ashtrobe
相关产品推荐
相关产品推荐

