Turco caracteres em python
Pergunta
Estou a brincar com a API do Twitter, mas tenho várias dúvidas sobre a codificação de caracteres turco.Aqui está o código que eu estou trabalhando com:
# -*- 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)
Basicamente, o que eu estou fazendo está executando a api de procura por iteração através de uma lista de consultas de pesquisa, e em seguida, escrever os tweets em um arquivo de excel.No entanto, não importa o que eu faça, os tweets são escritos por substituição regular caracteres turco com outros substitutos.Eu tentei várias coisas (definição da localidade, adicionando o .encode("utf-8") a parte, etc.), mas eu ainda não sei como corrigi-lo.
Aqui está o que eu estou falando:
o que está escrito:Dün akÅŸam Ãœlker Arena
o que eu quero escrever:Dün akşam Ülker Arena
O que eu não entendo é que, ü, Ü e equidade estão todos no local letras quando eu definir o idioma para o turco, mas Python substitui essas letras.
Solução
Eu duplicado o seu código no meu sistema (Windows 7, Office 2010) e eu tenho que trabalhar.Eu usei o seu código, mas eu simplifiquei a consulta de pesquisa da seguinte forma:
search_results = api.search(q="canan1405", count=10)
for tweet in search_results:
print tweet.text.encode('utf-8')
Eu puxei tweets a partir do 'canan1405' usuário como eles continham caracteres turco.(Espero que ela não mente!)
Eu simplesmente redirecionado a saída do meu script para um arquivo, como segue:
python so_24038317.py > tweets.csv
Neste ponto, os tweets.arquivo csv contém caracteres Unicode codificados como UTF-8.Se eu clicar duas vezes sobre o arquivo como você fez, o padrão do Excel visor mostra caracteres ilegíveis, bem como no seu caso:
Em vez de clicar duas vezes no arquivo csv, use as seguintes etapas para importar o arquivo:
- Iniciar O Excel.
- Clique em "Dados" guia da faixa de opções.
- Clique em "Texto" ícone "Obter Dados Externos".
- Localize o arquivo CSV e clique no botão "Importar".
- Um assistente será exibida.No meu caso, ele veio com o palpite correto para o arquivo de conteúdo (ver "Ficheiro de origem:" drop-down):
Você pode completar o resto dos passos para o assistente, mas eles são opcionais.O arquivo exibido corretamente:
Tanto quanto eu posso dizer, ele contém (e exibe corretamente) os seguintes caracteres turco:
ş, Ğ, İ, ğ, ı, ç
Observe que o caractere imediatamente após a seqüência de caracteres "Oyy şirin kedi" é um emoticon, não um válido de caracteres UTF-8.Espero que isso ajude.
Outras dicas
utilização iso-8859-9
ou iso-8859
codificar ter caracteres turco.
EDITAR :
se você deseja codificação utf8 absolutamente, decodificar e codificar depois
Você pode fazer isso myString.decode('iso-8859-9').encode('utf8')