2017-06-17 5 views
1

アラビア語の英語データベースを含むPythonプログラムで作業しています。このデータベースを更新したり、ボキャブラリを学習することができます。私は必要な機能をすべて実装していますが、最も重要な部分が欠けています。アラビア文字列のエンコーディングです。新しい語彙をデータベースのtxtファイルに追加するには、ディクショナリが作成され、その内容がファイルに追加されます。語彙を勉強するために、txtファイルの内容が再度辞書に変換され、ランダムな単語がコンソールに印刷され、その翻訳が頼まれます。今や、ユーザはEnglisch単語とアラビア語をラテン文字で書く可能性があり、プログラムは内部的に擬似アラビア文字列をアラビア文字に変換します。たとえば、ユーザーがアラビア語を要求されたときに「b」と書いた場合は、「ب」を追加します。 1.実装で考慮する必要がある約80の兆候があります。ラテン文字の入力文字列とそれぞれのアラビア文字の間のマッピングを作成する方法はありますか?私の場合、最も直観的なアイデアは、if文を他の文の後に書くことですが、それはおそらく超速です。 2.アラビア文字列をコンソールに印刷するのに問題があります。この入力python Unicodeをファイルに書き込んでシンボルとして取得します

print('bla{}!'.format(chr(0xfe9e))) 
print('bla{}!'.format(chr(int('0x'+'0627',16)))) 

が、これはしません一方、アラビア語記号の印刷になります:私はUnicodeのシンボルで構成されてシーケンスをしたいので、

print('{}'.format(chr(0xfe9e))) 

私は、この問題を回避するために何ができますのみ?

+0

最後の行はPython 3でうまく動作します。アラビア語が右から左に書かれているため、行の右端の文字を検索する必要があります。 – ForceBru

+0

あなたは正しいですね。ありがとう!最初の質問の提案はありますか? – hmw1001

+0

ようこそStackOverflowへ!あなたの質問を2つの部分に分割することをお勧めします。この1つ(アラビア語のUnicode文字を印刷/保存すること)を行いますが、次に数字1を切り捨てて(アラビア語の字句を翻字して)、新しい質問として投稿します。 –

答えて

0

encode/decodeを試しましたか?例えばあなたは書くことができます

u = ("سلام".encode('utf-8')) 
print(u.decode('utf-8')) 
+0

これを後でコンソールに出力しますか?後ろ向き道がありますか? – hmw1001

+0

私は@ hmw1001の上に私の答えを完了しました –

0

これは最終的な答えではありませんが、あなたには始めることができます。

まず第一に、あなたのエンコーディングを確認してください。

import sys 
sys.getdefaultencoding() 

編集:

sys.setdefaultencoding('UTF8')sysモジュールから削除されました。でも、あなたの箱に何を返すのかをsys.getdefaultencoding()が返すことができます。

しかし、アラビア文字のために、あなたが一度にすべてを範囲とすることができます

このwebsiteによると、アラビア文字が0x620 to 0x64Bからのものであり、基本ラテン文字が(下の例のために)0x0061 to 0x007Bからです。

ので:今

arabic_chr = [chr(k) for k in range(0x620, 0x064B, 1)] 
latin_chr = [chr(k) for k in range(0x0061, 0x007B, 1)] 

、あなたは、ORR多分(私はアラビア語を話すと、私は多くの形態があることを知っている範囲をより広げる、二つのリストの間の関係を見つけることですしなければならないものをすべて1つの文字と1文字が単語から別の文字に変わることがあります)。

関連する問題