无法打印从属元音

问题描述 投票:0回答:1

我正在阅读由 bengali 单词组成的文本文件。但我无法打印像KA,KI etc这样的依赖元音...... 这是我的示例代码和输出

import unicodedata

bengali_phoneme_maplist = {
    u'অ':'A',u'আ':'AA',u'ই':'I',u'ঈ':'II',u'উ':'U',u'ঊ ':'UU',u'ঋ ':'R',u'ঌ ':'L',u'এ ':'E',
    u'ঐ ':'AI',u'ও ':'O',u'ঔ ':'AU',u'ক':'KA',u'খ ':'KHA',u'গ ':'GA',u'ঘ':'GHA',u'ঙ ':'NGA',
    u'চ ':'CA',u'ছ':'CHA',u'জ ':'JA',u'ঝ':'JHA',u'ঞ':'NYA',u'ট ':'TTA',u'ঠ':'TTHA',
    u'ড ':'DDA',u'ঢ':'DDHA',u'ণ ':'NNA',u'ত ':'TA',u'ত ':'THA',u'দ':'DA',u'ধ':'DHA',
    u'ন':'NA',u'প':'PA',u'ফ':'PHA',u'ব':'BA',u'ভ':'BHA',u'ম ':'MA',u'য ':'YA',u'র':'RA',
    u'ল ':'LA',u'শ ':'SHA',u'ষ':'SSA',u'স ':'SA',u'হ':'ha',u' া ':'AAV',u' ি':'IV',
    u'ী':'IIV',u'ু':'UV',u'ূ':'UUV',u'ৃ':'RRV',u'ৄ ':'RR',u'ৄ':'EV',u' ৈ':'EV',u'়':'NUKTHA',
    u'ঽ':'AVAGRAHA'
}
bengali_phoneme_maplist_normalise = {
    unicodedata.normalize('NFKD', k): v for k, v in bengali_phoneme_maplist.items()
}

with open('bengali.txt', 'r') as infile:
    lines=infile.readlines()
    for index, line in enumerate(lines):
        print('Phonemes in line{0}.total{1} symbols'.format(index, len(line)))
        unknown=[]
        words=line.split()
        for word in words:
            print(word, ':', sep=' ', end='')
            for character in word:
                c = unicodedata.normalize('NFKD', character).casefold()
                try:
                    print(bengali_phoneme_maplist_normalise[c], sep='', end='')
                except KeyError:
                    print('_', sep='', end='')
                    if c not in unknown:
                        unknown.append(c)
            print()

if unknown:
    print('Unrecognised symbols: {0} (total {1} symbols)'.format(','.join(unknown), len(unknown) ) )

示例输入文件

bengali.txt
:

text_000002 "শিল্পাঞ্চলে ঢোকার মুখে, স্ন্যাক্সবারে খাবার কিনছিলেন, বহুজাতিক তথ্যপ্রযুক্তি সংস্থার কর্মী, শুভময় বন্দ্যোপাধ্যায়

输出示例:

Phonemes in line0.total126 symbols
text_000002 :___________
"শিল্পাঞ্ :_____PA_NYA____
ঢোক :DDHA_KA_RA
মুখ, :_UV___
স্ন্যাক্সব :__NA___KA__BA_RA_
খাব :__BA_RA
কিনছি, :KA_NACHA___NA_
বহুজাত :BAhaUV____KA
তথ্যপ্রযুক্ত :____PA_RA_UVKA___
সংস্থ :______RA
কর্ম, :KARA__IIV_
শুভময় :_UVBHA__
বন্দ্যোপাধ্ :BANA_DA___PA_DHA____
Unrecognised symbols: t,e,x,_,0,2,",শ,ি,ল,্,া,চ,ে,,ো,ম,খ,,,স,য,জ, (total 25 symbols)
python-3.x unicode python-unicode
1个回答
0
投票

(请注意,我对孟加拉语一无所知。:)

您的代码中存在一些问题:

  1. bengali_phoneme_maplist
    定义中有许多额外的空格字符。例如,
    u'ঊ '
    应该是
    u'ঊ'
    。而且在文本编辑器中输入u'া'这样的字符似乎不太容易,所以我建议你在代码中直接使用unicode,如
    '\u09be':'AAV'
    。 (实际上我建议你对所有字符使用
    '\uxxxx'
    并在注释中写下真正的字符。)
  2. u'ত':'TA',u'ত':'THA'
    应更改为
    u'ত':'TA',u'থ':'THA'
  3. bengali_phoneme_maplist
    中的字符不完整。例如,没有 ো 、 ৌ 、 ্ 和 ং

修正这些错误后,您将得到正确的结果。

© www.soinside.com 2019 - 2024. All rights reserved.