2017-06-17 44 views
1

我正在研究一個包含阿拉伯語 - 英語數據庫並允許更新此數據庫並研究詞彙表的Python程序。我幾乎完成了實現我需要的所有功能,但最重要的部分是缺少的:阿拉伯字符串的編碼。要將新詞彙附加到數據庫txt文件,將創建一個詞典,然後將其內容附加到該文件。爲了學習詞彙,txt文件的內容再次被轉換成字典,隨機單詞被打印到控制檯並且用戶被要求翻譯。現在的想法是,用戶有可能用拉丁字母寫英語單詞和阿拉伯單詞,程序將內部將僞阿拉伯字母轉換成阿拉伯字母。例如,如果用戶在詢問阿拉伯語單詞時寫入'b',我想追加'ب'。 1.在實施過程中我需要考慮大約80個標誌。有沒有在拉丁字母輸入字符串和相應的阿拉伯符號之間創建映射的方法?對我來說,最直觀的想法是寫一個if語句,但可能會超慢。 2.我無法將阿拉伯文字符串打印到控制檯。該輸入python將unicode寫入文件並將其作爲符號檢索

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

會導致打印阿拉伯語跡象,而這不會:

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

我能爲了避免這個問題呢,因爲我想它由Unicode的符號序列只要?

+0

最後一行在Python 3中適用於我。您應該在行的最右側部分搜索字符,因爲阿拉伯語是從右向左書寫的。 – ForceBru

+0

天哪,你是對的。謝謝!第一個問題的任何建議? – hmw1001

+0

歡迎來到StackOverflow!我建議將問題分爲兩部分:這一部分(處理打印/存儲阿拉伯文unicode字符),然後將第一部分翻譯爲阿拉伯文(拉丁文字母的音譯)並將其作爲新問題發佈。 –

回答

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)] 

現在,所有你需要做的,就是找到這兩個列表之間的關係,奧爾也許擴展更多的範圍(我說阿拉伯語,我知道有很多形式是什麼一個字符和一個字符可以從一個字改變爲另一個字)。

相關問題