我正在使用 Twitter API,但我有几个关于土耳其字符编码的问题。这是我正在使用的代码:
# -*- coding: cp1254 -*-
import sys
import csv
import tweepy
import locale
import string
locale.setlocale(locale.LC_ALL, "Turkish")
auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_key, access_secret)
api = tweepy.API(auth)
f=open("tweets.csv", "wb")
for q in [list of search queries]:
a=[tweet.text.encode("utf-8") for tweet in tweepy.Cursor(api.search, q, result_type="recent", include_entities=True, lang="tr").items(20)]
wr=csv.writer(f, quoting=csv.QUOTE_ALL)
wr.writerow(q)
基本上,我所做的是通过遍历搜索查询列表然后将推文写入 excel 文件来运行搜索 api。然而,无论我做什么,推文都是通过用其他替代品替换常规土耳其字符来编写的。我已经尝试了几件事(设置语言环境、添加 .encode("utf-8") 部分等),但我仍然不知道如何修复它。
我说的是:
what is written: Dün akşam Ülker Arena
what I want it to write: Dün akşam Ülker Arena
我不明白的是,当我将语言环境设置为土耳其语时,ü、Ü 和ş 都是本地字母,但 Python 替换了这些字母。
最佳答案
我在我的系统(Windows 7,带 Office 2010)上复制了您的代码,并且它运行正常。我使用了您的代码,但我将搜索查询简化如下:
search_results = api.search(q="canan1405", count=10)
for tweet in search_results:
print tweet.text.encode('utf-8')
我从“canan1405”用户那里提取了推文,因为它们包含土耳其字符。 (希望她不介意!)
我只是将脚本的输出重定向到一个文件,如下所示:
python so_24038317.py > tweets.csv
此时,tweets.csv 文件包含编码为 UTF-8 的 Unicode 字符。如果我像您一样双击该文件,默认的 Excel 显示会显示垃圾字符,就像您的情况一样:
不要双击 csv 文件,而是使用以下步骤导入文件:
- 启动 Excel。
- 单击功能区上的“数据”选项卡。
- 单击“获取外部数据”中的“来自文本”图标。
- 找到 CSV 文件并点击“导入”按钮。
- 将显示一个向导。就我而言,它对文件内容进行了正确的猜测(请参阅“文件来源:”下拉列表):
您可以完成向导的其余步骤,但它们是可选的。正确显示的文件:
据我所知,它包含(并正确显示)以下土耳其语字符:
ş, Ğ, İ, ğ, ı, ç
请注意,紧跟在字符串“Oyy şirin kedi”之后的字符是表情符号,而不是有效的 UTF-8 字符。希望这会有所帮助。
关于python - python中的土耳其字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24038317/