Я хочу создать простой скрипт Python, который будет отображать каждое арабское письмо на звуковые символы фонемы. У меня есть файл, который имеет кучу слов, что сценарий будет читать, чтобы преобразовать их в фонемы, и у меня есть следующий словарь в моем коде:Как сопоставить арабские буквы для фонем в Python?
Содержание в моем .txt
файле:
السلام عليكم
السلام عليكم و رحمة الله
السلام عليكم و رحمة الله و بركاته
الحمد لله
كيف حالك
كيف الحال
Словаре в моем коде:
ar_let_phon_maplist = {u'ﺍ':'A:', u'ﺏ':'B', u'ﺕ':'T', u'ﺙ':'TH', u'ﺝ':'J', u'ﺡ':'H', u'ﺥ':'KH', u'ﻩ':'H', u'ﻉ':'(ayn) ’', u'ﻍ':'GH', u'ﻑ':'F', u'ﻕ':'q', u'ﺹ':u'ṣ', u'ﺽ':u'ḍ', u'ﺩ':'D', u'ﺫ':'DH', u'ﻁ':u'ṭ', u'ﻙ':'K', u'ﻡ':'M', u'ﻥ':'N', u'ﻝ':'L', u'ﻱ':'Y', u'ﺱ':'S', u'ﺵ':'SH', u'ﻅ':u'ẓ', u'ﺯ':'Z', u'ﻭ':'W', u'ﺭ':'R'}
у меня есть вложенный цикл, где я читаю каждую строку, преобразовывая каждый символ:
with codecs.open(sys.argv[1], 'r', encoding='utf-8') as file:
lines = file.readlines()
line_counter = 0
for line in lines:
print "Phonetics In Line " + str(line_counter)
print line + " ",
for word in line:
for character in word:
if character == '\n':
print ""
elif character == ' ':
print " "
else:
print ar_let_phon_maplist[character] + " ",
line_counter +=1
И это ошибка, я получаю:
Phonetics In Line 0
السلام عليكم
Traceback (most recent call last):
File "grapheme2phoneme.py", line 25, in <module>
print ar_let_phon_maplist[character] + " ",
KeyError: u'\u0627'
А потом я проверил, если тип файла UTF-8 с помощью команды Linux:
file words.txt
Выход я получил:
words.txt: UTF-8 Unicode text
Любое решение этой проблемы, почему она не отображающей на объект Unicode, который находится в словаре, так и по характеру я использую в качестве ключа в ar_let_phon_maplist[character]
- это Unicode? Что-то не так с моим кодом?
Необходимо, конечно, импортировать 'unicodedata'. –
Спасибо, что решил проблему. – 0x01Brain