الشخصيات التركية في بايثون
سؤال
أنا ألعب مع أبي تويتر ، ولكن لدي العديد من الأسئلة بشأن ترميز الأحرف التركية.هنا هو رمز أنا أعمل مع:
# -*- 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)
في الأساس ، ما أفعله هو تشغيل أبي البحث عن طريق التكرار من خلال قائمة استعلامات البحث ومن ثم كتابة تويت في ملف إكسيل.ومع ذلك ، بغض النظر عما أفعله ، تتم كتابة التغريدات عن طريق استبدال الأحرف التركية العادية ببدائل أخرى.لقد حاولت عدة أشياء (وضع لغة, مضيفا .ترميز("أوتف-8") جزء ، الخ.) ، لكن ما زلت لا أعرف كيفية إصلاحه.
هنا هو ما أتحدث عنه:
ما هو مكتوب:أرينا
ما أريد أن أكتب:أرينا
ما لا أفهمه هو أن ü ، and و all كلها في الحروف المحلية عندما قمت بتعيين اللغة إلى التركية ، ولكن بيثون بدائل هذه الحروف.
المحلول
أنا تكرار التعليمات البرمجية الخاصة بك على نظام بلدي (ويندوز 7 ، مع أوفيس 2010) وحصلت عليه العمل.لقد استخدمت الكود الخاص بك ولكني قمت بتبسيط استعلام البحث على النحو التالي:
search_results = api.search(q="canan1405", count=10)
for tweet in search_results:
print tweet.text.encode('utf-8')
لقد سحبت التغريدات من مستخدم كانان 1405 لأنها تحتوي على أحرف تركية.(آمل أنها لا تمانع!)
أنا ببساطة إعادة توجيه إخراج البرنامج النصي الخاص بي إلى ملف ، على النحو التالي:
بايثون so_24038317.py > تويت.كسف
عند هذه النقطة ، تويت.يحتوي ملف كسف أحرف ونيكود المشفرة كما أوتف-8.إذا كنت انقر نقرا مزدوجا فوق الملف كما فعلت ، يظهر العرض إكسيل الافتراضي أحرف القمامة مثل الكثير في قضيتك:
بدلا من النقر المزدوج على ملف كسف ، استخدم الخطوات التالية لاستيراد الملف:
- بدء التفوق.
- انقر فوق علامة التبويب" البيانات " على الشريط.
- انقر فوق رمز" من النص "في"الحصول على بيانات خارجية".
- حدد موقع ملف كسف وانقر على زر" استيراد".
- سيتم عرض معالج.في حالتي ، جاء مع التخمين الصحيح لمحتويات الملف (انظر القائمة المنسدلة "أصل الملف:"):
يمكنك إكمال بقية الخطوات للمعالج ولكنها اختيارية.الملف المعروض بشكل صحيح:
بقدر ما أستطيع أن أقول ، فإنه يحتوي على (ويعرض بشكل صحيح) الأحرف التركية التالية:
ş, Ğ, İ, ğ, ı, ç
لاحظ أن الحرف مباشرة بعد سلسلة "أوي أوشيرين كيدي" هو التعبيرات ، وليس حرف أوتف-8 صالحة.نأمل أن يساعد هذا.
نصائح أخرى
استخدام iso-8859-9
أو iso-8859
ترميز أن يكون الأحرف التركية.
تحرير :
إذا كنت تريد أوتف 8 ترميز أبسولوتلي ، فك ترميز وترميز بعد
يمكنك القيام بذلك myString.decode('iso-8859-9').encode('utf8')