Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
需要通过在python中拆分给定字符串来创建列表_Python_Python 3.x_String_List - Fatal编程技术网

需要通过在python中拆分给定字符串来创建列表

需要通过在python中拆分给定字符串来创建列表,python,python-3.x,string,list,Python,Python 3.x,String,List,输入字符串的“n”倍为X。类似于“XXXXX” 需要拆分字符串并制作一个列表,其中字符串的每个字符(X)都是列表中的每个元素 约束条件: 0这里有一个变体,确保子字符串都匹配给定的模式: input_ = "121212121212121212" x = "12" res = [] while input_.startswith(x): res.append(x) input_ = input_[len(x):] 要解码此字符串,您仍然需要'n'和X'。 为什么不直接使用以下工

输入字符串的“n”倍为X。
类似于“XXXXX”
需要拆分字符串并制作一个列表,其中字符串的每个字符(X)都是列表中的每个元素

约束条件:

0这里有一个变体,确保子字符串都匹配给定的模式:

input_ = "121212121212121212"
x = "12"
res = []
while input_.startswith(x):
    res.append(x)
    input_ = input_[len(x):]

要解码此字符串,您仍然需要'n'和X'。 为什么不直接使用以下工具构建它:

li = [X] * n
编辑: 如果没有“n”,则可以从给定的字符串中轻松获取它。 (在givenString仅由X组成的条件下)


您可以使用正则表达式:

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']

如果
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")

这回答了你的问题吗?如果可能的话,请澄清你的问题。是否始终在列表中生成两个字符对?或者,是否要将字符串拆分为类似的字符序列?例如,
123123
会变成
[123,123]
,还是会变成
[12,31,23]
?因为X是最新的编辑,我下面的答案应该有用。我事先不知道“n”。
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")