我正在玩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”)部分等),但我仍然不知道如何解决它。
以下是我所说的:
所写内容:DünakÅŸamÃœlkerArena
我想要它写的:DünakşamÜlkerArena
我不明白的是,当我将语言环境设置为土耳其语时,ü,Ü和ş都在本地字母中,但Python会替换这些字母。
答案 0 :(得分:3)
我在我的系统上复制了你的代码(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文件,而是使用以下步骤导入文件:
答案 1 :(得分:0)
使用iso-8859-9
或iso-8859
编码设置土耳其语字符。
编辑:
如果你想绝对的utf8编码,解码和编码后
您可以执行此操作myString.decode('iso-8859-9').encode('utf8')
答案 2 :(得分:0)
在打开文件时尝试给出编码:
Public class test2 {
Public static void main(String[] args) {
Syso(“a in test2 “+test1.a);
test1.connect();
Syso(“modified a in test2 ”+test1.a);
}
}