Разделить символы из строки по n-му символу python - PullRequest
0 голосов
/ 05 мая 2020

У меня есть два специальных типа строк (обе состоят из строчных английских sh букв): two_string: строка длины 2 (пример: «ab», «zz») three_string: строка длины 3 (пример: «ab c "," ghw ")

Мне нужно создать новые строки, поместив одну или несколько two_strings и three_strings бок о бок в строке и не помещая две одинаковые строки рядом друг с другом. Из приведенного выше примера вы можете создать, например, «abzz», «abab c», «zzabcghwab», et c ..

случай, мне нужно сгенерировать список возможных двух символов и три символа из входной строки

Например,

input_string = "abcdef" output = ["ab", "ab c", "cd", "def", " ef "], et c ..

input_string1 =« abcdefg »output1 = [« ab »,« ab c »,« cd »,« cde »,« de »,« efg » ] et c ..

input_string2 = «ababcab c» output2 = [«aba», «ab c», «b c», «bca», «ab», "ca"] et c ..

input_string3 = "cccca cccc" output3 = ["ca c", "ccc"] et c ..

def split_string(strg):
strg_len = len(strg)
output_strg = []
for x in range(0,len(strg)):
    x_2 = x+2
    x_3 = x+3
    two_ltr_com = strg[x:x_2]
    if(len(two_ltr_com) > 1):
        if(two_ltr_com not in output_strg):
            output_strg.append(two_ltr_com)
        if(x+3 <= len(strg)):
            three_ltr_com = strg[x:x_3]
            if(three_ltr_com not in output_strg):
                output_strg.append(three_ltr_com) 
return output_strg

result = split_string("abcdef")
print(result)

может ли кто-нибудь мне помочь в этом случае? Заранее спасибо

1 Ответ

0 голосов
/ 05 мая 2020

Я думаю, что я бы сделал al oop, который перебирает желаемую длину подстроки. Например, в этом случае for substr_len in (2, 3):.

Внутри этого l oop я бы использовал другой l oop для итерации по строковым индексам. Я бы собрал все совпадающие строки в set, который позаботится о дубликатах (наборы не могут содержать повторяющиеся элементы).

Итак, как грубый набросок:

s = "abcdefghij"
substrings = set()
for substring_len in (2, 3):
    for idx in range(0, len(s), substring_len):
        ss = s[idx:idx+substring_len]
        substrings.add(ss)

Единственная другая вещь, о которой я думаю, вам нужно подумать, это как обрабатывать входные строки, длина которых не делится на 12 - например, как выглядят 2-строки [s] "ab c"?

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