Исправить написание слов в строке с помощью словаря? - PullRequest
0 голосов
/ 08 января 2019

У меня есть список ввода, в котором написание REJECTED записывается как RE1ECTED, а DATE пишется как OATE. Мне нужно исправить орфографию и получить список вывода как:

output_list = ["REJECTED 00000 00000","DATE TIME =06/27/18 21 37","NACH NE NO XY"]

Я могу получить исправленный список по отдельности, но не так, как показано выше. Могу ли я ожидать какой-нибудь совет?

input_list = ["=RE1ECTED 00000 00000",'OATE TIME =06/27/18 21 37','NACH NE NO xy']
Reg_dictionary = {"REJECTED" : ["=RE"],"DATE" : ["OA","DA"] }
for key,value in Reg_dictionary.items():
    temp = [key, value]
    for each_value in value:
        for string_list in input_list:
            count  = -1
            # print (count_number_of_string)
            each_in_string  = string_list.split(" ")
            for each_word in each_in_string:
                count = count + 1
                if each_value in each_word:
                    # print (count)
                    # print (string_list)
                    # print(each_word)
                    # print (key)
                    # print(each_in_string)
                    (each_in_string[count]) =key
                    print(each_in_string)

вывод из print (each_in_string) таков:

['REJECTED', '00000', '00000']

['DATE', 'TIME', '=06/27/18', '21', '37']

Ожидаемый результат:

output_list = ["REJECTED 00000 00000","DATE TIME =06/27/18 21 37","NACH NE NO XY"]

Ответы [ 2 ]

0 голосов
/ 08 января 2019

Вы можете сделать что-то вроде этого:

from functools import reduce 

input_list = ["=RE1ECTED 00000 00000",'OATE TIME =06/27/18 21 37','NACH NE NO xy']
Reg_dictionary = {"REJECTED" : ["=RE"],"DATE" : ["OA","DA"] }
l = []
for key,value in Reg_dictionary.items():
    temp = [key, value]
    for each_value in value:
        for string_list in input_list:
            count  = -1
            # print (count_number_of_string)
            each_in_string  = string_list.split(" ")
            for each_word in each_in_string:
                count = count + 1
                if each_value in each_word:
                    # print (count)
                    # print (string_list)
                    # print(each_word)
                    # print (key)
                    # print(each_in_string)
                    (each_in_string[count]) =key
                    #print(each_in_string)
                    l.append(reduce(lambda x,y: x+' '+y, each_in_string)) # added this line
print(l)
0 голосов
/ 08 января 2019

Вы должны объединить элементы в списке, а затем списки вместе. Вы можете объединить элементы в списке с пробелом в качестве разделителя между элементами, например так: ' '.join(your_list), и это даст вам строку. Затем просто объедините 2 строки вместе с [string_1 + ' ' + string_2]. Это должно сделать это :)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...