使用Python收集阿拉伯语推特并保存至CSV文件时的显示异常问题求助
解决阿拉伯语推特CSV显示异常的问题
嘿,我来帮你搞定这个阿拉伯语推特存CSV后显示异常的问题~这大概率是因为你手动对文本做了编码处理,导致CSV里存的是字节对象而非正常可读的字符串,咱们一步步修复:
问题根源
你代码里把tweet.full_text用encode('utf-8-sig')转成了字节格式,写入CSV后,打开时就会显示类似b'阿拉伯语文本'这样的怪异内容,自然会乱码或者显示异常。其实csv模块本身就能很好处理字符串,只要我们在打开文件时指定正确的编码就行。
修复后的完整代码
import tweepy import csv # Twitter API credentials consumer_key = "..." consumer_secret = ".." access_key = "..." access_secret = "...." auth = tweepy.OAuthHandler(consumer_key, consumer_secret) auth.set_access_token(access_key, access_secret) api = tweepy.API(auth, wait_on_rate_limit=True) # 打开文件时直接指定编码为utf-8-sig,用with语句更安全 with open('tweets.csv', 'a', newline='', encoding='utf-8-sig') as csvFile: csvWriter = csv.writer(csvFile) for tweet in tweepy.Cursor(api.search, q="اكتئاب", since="2021-01-30", truncated=False, tweet_mode="extended", count=1).items(): if (not tweet.retweeted) and ('RT @' not in tweet.full_text): # 直接写入原始字符串,不需要手动编码 csvWriter.writerow([tweet.full_text])
关键修改说明
- 指定文件编码:用
encoding='utf-8-sig'打开文件,这个编码带BOM头,能让Windows下的Excel等软件正确识别阿拉伯语这类非ASCII字符,避免乱码问题。 - 移除手动编码操作:
csv.writer会自动按文件指定的编码处理字符串,手动encode会把字节对象存进CSV,导致显示异常。 - 改用with语句管理文件:这样能确保文件自动关闭,避免资源泄漏,比直接open文件的写法更规范可靠。
按这个修改后,你再打开CSV文件,阿拉伯语推特内容应该就能正常显示啦~
内容的提问来源于stack exchange,提问作者Reem Abdulrhman
相关产品推荐
相关产品推荐

