Турецкие символы в питоне
Вопрос
Я экспериментирую с API Twitter, но у меня есть несколько вопросов относительно кодировки турецких символов.Вот код, с которым я работаю:
# -*- 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> tweets.csv
На данный момент файл Tweets.csv содержит символы Unicode, закодированные как UTF-8. Если я дважды щелкнул файл, как вы сделали, дисплей Excel по умолчанию показывает символы мусора, как в вашем случае:
- Старт Excel.
- Нажмите на вкладку «Данные» на ленте.
- Нажмите значок «из текста» в «Получить внешние данные».
- Найдите файл CSV и нажмите кнопку «Импорт».
- Волшебник будет отображаться. В моем случае он придумал правильное предположение для содержимого файла (см. «Происхождение файла:« Выпадающее):
Вы можете выполнить остальные шаги для мастера, но они необязательны. Файл отображается правильно:
Насколько я могу сказать, он содержит (и правильно отображает) следующие турецкие символы:
ş, Ğ, İ, ğ, ı, ç
Обратите внимание, что персонаж сразу после строки «Oyy şirin KEDI» - это смайлик, а не действительный символ UTF-8. Надеюсь, это поможет.
Другие советы
использовать iso-8859-9
или iso-8859
закодировать так, чтобы в нем были турецкие символы.
РЕДАКТИРОВАТЬ :Если вы хотите, чтобы UTF8 кодировал абсолютно, декодируйте и кодируйте после того, как вы сможете сделать это myString.decode('iso-8859-9').encode('utf8')