需要通过在python中拆分给定字符串来创建列表
输入字符串的“n”倍为X。需要通过在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'。 为什么不直接使用以下工
类似于“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")