将含700个0和700个1的列表转为UTF-8文本文件时遇乱码
问题
我有一个包含700个0和700个1的列表Ytrain = [0, 0, ..., 1, 1, ...],希望将其转换为UTF-8编码的文本文件。在Google Colab中运行以下代码后,下载的output.txt文件出现了如ਰਰਰਰਰਰਰਰਰਰ这类乱码内容:
with open('output.txt', 'w', encoding='utf-8') as file: for item in Ytrain: file.write(str(item) + '\n')
解决方法
你的代码逻辑本身没有问题,乱码大概率是文件打开编码不匹配或下载过程中的潜在问题,可通过以下步骤解决:
优化写入代码,明确换行符:
写入时指定newline='\n',避免不同系统换行符差异导致的解析问题:with open('output.txt', 'w', encoding='utf-8', newline='\n') as file: for item in Ytrain: file.write(f"{item}\n")使用Colab官方方法下载文件:
确保通过Colab的files.download方法下载,避免浏览器或第三方工具的编码干扰:from google.colab import files files.download('output.txt')强制以UTF-8编码打开文件:
打开下载后的文件时,在编辑器中手动选择UTF-8编码(比如Notepad++中选「编码」→「UTF-8」,Windows记事本打开时在弹窗中选择「UTF-8」)。一次性写入所有内容(可选优化):
将列表转换为字符串后一次性写入,减少IO操作的同时避免逐行写入的潜在问题:with open('output.txt', 'w', encoding='utf-8') as file: file.write('\n'.join(map(str, Ytrain)) + '\n')
内容的提问来源于stack exchange,提问作者Sunjaree
相关产品推荐
相关产品推荐

