Python のトルコ文字
質問
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)
基本的に、私がやっていることは、検索クエリのリストを反復処理して検索 API を実行し、ツイートを Excel ファイルに書き込むことです。しかし、どうやってもツイートは通常のトルコ文字を他の代替文字に置き換えて書かれています。いくつかのこと(ロケールの設定、.encode("utf-8") 部分の追加など)を試しましたが、まだ修正方法がわかりません。
私が話している内容は次のとおりです。
何が書かれているか:ドゥン・アクザム・アルカー・アリーナ
書きたいこと:ドゥン アクシャム ウルカー アリーナ
理解できないのは、ロケールをトルコ語に設定すると、ü、Ü、ş はすべてローカル文字になりますが、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 > ツイート.csv
この時点で、tweets.csv ファイルには、UTF-8 としてエンコードされた Unicode 文字が含まれています。あなたと同じようにファイルをダブルクリックすると、デフォルトの Excel 表示にはあなたの場合と同じように文字化けが表示されます。
CSV ファイルをダブルクリックする代わりに、次の手順に従ってファイルをインポートします。
- エクセルを起動します。
- リボンの「データ」タブをクリックします。
- 「外部データの取得」の「テキストから」アイコンをクリックします。
- CSV ファイルを見つけて、「インポート」ボタンをクリックします。
- ウィザードが表示されます。私の場合、ファイルの内容は正しく推測されました (「ファイルの生成元:」ドロップダウンを参照)。
ウィザードの残りの手順を実行できますが、これらはオプションです。ファイルは正しく表示されました。
私の知る限り、次のトルコ語文字が含まれています (そして正しく表示されています)。
ş, Ğ, İ, ğ, ı, ç
文字列「Oyy şirin kedi」の直後の文字は顔文字であり、有効な UTF-8 文字ではないことに注意してください。お役に立てれば。
他のヒント
は、Turkish文字を持つためにiso-8859-9
またはiso-8859
エンコードを使用します。
編集:
UTF8を絶対にエンコードしたい場合は、後にデコードしてエンコードしてください。
このmyString.decode('iso-8859-9').encode('utf8')