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.

Foi útil?

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:

  1. Iniciar O Excel.
  2. Clique em "Dados" guia da faixa de opções.
  3. Clique em "Texto" ícone "Obter Dados Externos".
  4. Localize o arquivo CSV e clique no botão "Importar".
  5. 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')

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top