Как преобразовать строки в сокращения - PullRequest
0 голосов
/ 23 октября 2019

Я хочу сделать что-то подобное, если у меня есть текстовая расшифровка системы распознавания речи, я хочу преобразовать этот текст следующим образом - Triple A преобразует в AAA. Может кто-нибудь помочь?

1 Ответ

0 голосов
/ 23 октября 2019

Повторение 3 раза

Если вы имеете в виду, что строка «Triple» должна рассматриваться как ключевое слово, значение следующей строки которого должно быть заменено на себя втрое, то следующее может выполнить то, что вы хотите:

def tripler(s):
    triples = 0
    s = [ss.strip() for ss in s.split()][::-1]

    for i in range(len(s) - 1):
        if s[i - triples + 1] == 'Triple':
            s[i - triples] *= 3

            del s[i - triples + 1]
            triples += 1

    return ' '.join(s[::-1])

Динамические повторы

Для повторения аргумента любое количество раз можно использовать словарь с разными ключевыми словами и соответствующими значениями:

repeat_keywords = {'Double':2, 'Triple':3}

def repeater(s):
    repeats = 0
    s = [ss.strip() for ss in s.split()][::-1]

    for i in range(len(s) - 1):
        if s[i - repeats + 1] in repeat_keywords:
            s[i - repeats] *= repeat_keywords[s[i - repeats + 1]]

            del s[i - repeats + 1]
            repeats += 1

    return ' '.join(s[::-1])

Входы :
1. Двойной x Тройной y
2. Двойной тройной y
3. Трехместный x Двойной Двойной y Тройной z Двойной

Выходы :
1. хх гггг
2. гггггг
3. ххх гггг zzz Двойной

Примечание : это решение также умножает значение повторяющихся ключевых слов. Это связано с разбором строки в обратном порядке.

...