Python写入CSV时,含非ASCII字符的YouTube标题显示为字节的问题
问题解决:YouTube标题中非ASCII字符在CSV中显示异常
问题根源
- 未指定文件编码时,非ASCII字符无法正常写入,导致CSV为空
- 手动调用
.encode("utf-8")将字符串转为字节对象,写入后CSV中显示为b'xxx'格式的字节形式
修复后的代码
import os import json from googleapiclient.discovery import build from datetime import date import csv today = date.today() # 初始化API客户端 api_key = 'API KEY' youtube = build("youtube", "v3", developerKey=api_key) # 获取希腊地区Top10热门视频 request = youtube.videos().list( part="snippet", chart="mostPopular", regionCode="GR", maxResults=10 ) response = request.execute() # 将结果写入CSV文件 try: # 打开文件时指定utf-8编码,同时移除字符串转字节的操作 with open("trending.csv", "w", newline="", encoding="utf-8") as file: writer = csv.writer(file) writer.writerow(["TOP 10 TRENDING YOUTUBE VIDEOS " + str(today)]) for video in response["items"]: writer.writerow([video["snippet"]["title"]]) except PermissionError: print("权限错误:你的Excel文件可能正在打开,请关闭后重试")
关键修改点
- 打开文件时添加
encoding="utf-8"参数,确保希腊字母等非ASCII字符能正常写入文件 - 移除
.encode("utf-8")操作,直接写入原始字符串(csv.writer会配合文件编码自动完成字符转换)
额外注意事项
如果用Excel打开CSV时希腊字母仍乱码:
- 打开Excel后,通过「数据」→「自文本/CSV」导入文件,在导入向导中选择「UTF-8」编码
内容的提问来源于stack exchange,提问作者Giannis Tsakas
相关产品推荐
相关产品推荐

