def convert_pinyin_to_rules():
    '''把基础词库中的拼音转换为输入规则(数字序列)'''
    coding_map = {
        'a': '2',
        'c': '2',
        'b': '2',
        'e': '3',
        'd': '3',
        'g': '4',
        'f': '3',
        'i': '4',
        'h': '4',
        'k': '5',
        'j': '5',
        'm': '6',
        'l': '5',
        'o': '6',
        'n': '6',
        'q': '7',
        'p': '7',
        's': '7',
        'r': '7',
        'u': '8',
        't': '8',
        'w': '9',
        'v': '8',
        'y': '9',
        'x': '9',
        'z': '9'
    }
    ws = WordsSearch()
    base_filename = os.path.join(src_file_path,
                                 'combine_top60000_and_5041.txt')
    base_file_with_pinyin = os.path.join(
        src_file_path, 'combine_top60000_and_5041_pinyin_role.txt')
    with codecs.open(base_filename, encoding='utf-8') as f,\
    codecs.open(base_file_with_pinyin, mode='wb', encoding='utf-8') as wf:
        whole_word_list = (item.split('\t')[0] for item in f.readlines())
        for word in whole_word_list:
            pinyin_str = ' '.join(ws.get_splited_pinyin(word)[0]).replace(
                '*', '')
            role_num = ''.join([
                coding_map[letter] for letter in pinyin_str
                if letter.isalpha()
            ])
            com_str = '\t'.join((word, pinyin_str, role_num))
            wf.write(com_str + '\n')
def get_input_rules_from_giving_words(input_words):
    '''输入汉字,输出相应的输入规则'''
    try:
        assert isinstance(input_words, unicode)
    except:
        input_words = input_words.decode('utf-8')
    coding_map = {
        'a': '2',
        'c': '2',
        'b': '2',
        'e': '3',
        'd': '3',
        'g': '4',
        'f': '3',
        'i': '4',
        'h': '4',
        'k': '5',
        'j': '5',
        'm': '6',
        'l': '5',
        'o': '6',
        'n': '6',
        'q': '7',
        'p': '7',
        's': '7',
        'r': '7',
        'u': '8',
        't': '8',
        'w': '9',
        'v': '8',
        'y': '9',
        'x': '9',
        'z': '9'
    }
    ws = WordsSearch()
    pinyin_str = ' '.join(ws.get_splited_pinyin(input_words)[0]).replace(
        '*', '')
    role_num = ''.join(
        [coding_map[letter] for letter in pinyin_str if letter.isalpha()])
    print '\t'.join((words.decode('utf-8'), pinyin_str, role_num))