Нужно составить список, разбив указанную строку на python - PullRequest
0 голосов
/ 01 февраля 2020

Входная строка имеет 'n' раз X. Like this "XXXXX" Необходимо разбить строку и составить список, в котором каждый символ строки (X) является каждым элементом списка.

Ограничения:
0 <= X <= любое число <br> 'n' неизвестно

Пример 1 : X равно 12,

Строка ввода: "121212121212121212"
Список вывода: [12,12,12,12,12,12,12,12,12]

Пример 2 : X равен 2,

Строка ввода: "2222"
Выход список: [2,2,2,2]

Пример 3 : X равен 489,

Строка ввода: "489489489"
Список вывода: [489,489,489]

Я попробовал этот подход my_list = list(input_string)

Я получаю вывод наподобие [1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2]

Может кто-нибудь помочь мне решить эту проблему?

Редактировать 1: I я новичок в stackoverflow. Пожалуйста, помогите мне правильно редактировать этот вопрос.

Ответы [ 4 ]

2 голосов
/ 01 февраля 2020

Для декодирования этой строки вам все равно нужны 'n' и X. Почему бы не собрать его напрямую с помощью:

li = [X] * n

Редактировать: Если у вас нет 'n', вы можете легко получить его из заданной строки. (При условии, что данный String состоит только из X)

n = len(givenString) / len(str(X))
li = [X] * n
1 голос
/ 01 февраля 2020

Вы можете использовать регулярные выражения:

import re 

x = input('Enter Your X : ')
mystr = input('Enter Your Input String : ')

result = re.findall(x, mystr) 
print(result)

Это выводит:

Enter Your X : 12
Enter Your Input String : 121212121212
['12', '12', '12', '12', '12', '12']
0 голосов
/ 01 февраля 2020

Если X также неизвестно, вы можете использовать это:

import textwrap

def find_shortest_pattern(input_):
     for len_ in range(1, int(len(input_) / 2) + 1):
          patterns = textwrap.wrap(input_, len_)
          if all(pattern == patterns[0] for pattern in patterns):
               return patterns[0]

find_shortest_pattern("123123123")
0 голосов
/ 01 февраля 2020

Вот вариант, который гарантирует, что все подстроки соответствуют указанному шаблону:

input_ = "121212121212121212"
x = "12"
res = []
while input_.startswith(x):
    res.append(x)
    input_ = input_[len(x):]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...