Question

Je suis à jouer avec l'API Twitter, mais j'ai plusieurs questions concernant l'encodage des caractères turcs.Voici le code, je travaille avec:

# -*- 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)

Fondamentalement, ce que je fais est de l'exécution de l'api de recherche en parcourant une liste de requêtes de recherche et en écrivant les tweets dans un fichier excel.Toutefois, peu importe ce que je fais, les tweets sont rédigés par le remplacement régulier des caractères turcs avec d'autres substituts.J'ai essayé plusieurs choses (les paramètres régionaux, l'ajout de la .encode("utf-8") de la partie, etc.), mais je ne sais toujours pas comment le résoudre.

Voici de quoi je parle:

ce qui est écrit:Dün akÅŸam Ãœlker Arena

ce que je veux écrire:Dün, akşam Ülker Arena

Ce que je ne comprends pas, c'est que, ü, Ü et ß sont tous dans le local des lettres lorsque j'ai mis les paramètres régionaux pour le turc, mais Python succédanés de ces lettres.

Était-ce utile?

La solution

J'ai dupliqué votre code sur mon système (Windows 7, Office 2010) et je l'ai eu à travailler.J'ai utilisé votre code, mais j'ai simplifié la requête de recherche comme suit:

search_results = api.search(q="canan1405", count=10)
for tweet in search_results:
    print tweet.text.encode('utf-8')

J'ai tiré les tweets de la "canan1405' utilisateur car ils contenaient des caractères turcs.(J'espère qu'elle n'a pas l'esprit!)

J'ai simplement redirigé la sortie de mon script dans un fichier comme suit:

python so_24038317.py > les tweets.csv

À ce stade, les tweets.fichier csv contient des caractères Unicode UTF-8.Si je double-clique sur le fichier que vous avez fait, la valeur par défaut Excel écran affiche des caractères illisibles comme dans votre cas:

Au lieu de double-cliquer sur le fichier csv, utilisez les étapes suivantes pour importer le fichier:

  1. Démarrez Excel.
  2. Cliquez sur l'onglet "Données" sur le ruban.
  3. Cliquez sur le "Texte" de l'icône dans la partie "Données Externes".
  4. Recherchez le fichier CSV et cliquez sur le bouton "Importer".
  5. Un assistant s'affiche.Dans mon cas, il est venu avec la bonne réponse pour le contenu du fichier (voir "l'origine du Fichier:" drop-down):

Vous pouvez remplir le reste des étapes de l'assistant, mais ils sont facultatifs.Le fichier affiche correctement:

Aussi loin que je peux dire, qu'il contient (et affiche correctement) les caractères turcs:

ş, Ğ, İ, ğ, ı, ç

Notez que le caractère immédiatement après la chaîne de caractères "Oyy şirin l'icde" est une émoticône, pas de caractères UTF-8.Espérons que cette aide.

Autres conseils

utilisation iso-8859-9 ou iso-8859 coder pour avoir des caractères turcs.

EDIT : si vous voulez l'encodage utf8 absolument, décoder et encoder après Vous pouvez le faire myString.decode('iso-8859-9').encode('utf8')

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top