有没有一种方法可以将字符串分割成块并存储在python列表中
我有一根绳子有没有一种方法可以将字符串分割成块并存储在python列表中,python,string,list,Python,String,List,我有一根绳子 x = "yfbrtutcfyugytfytfytcfdycfyrcdtrdrcdtreextredydsadyradrydstrdfrdfrrdecrcxhx" 我想将字符串x拆分为以下列表 y = [ "yfbrtutcfyugytfyt", "cfdycfyrcdtrdrcdtreextredy", "strdfrdfrrdecrcx" ] 我如何通过提供数字3并将其
x = "yfbrtutcfyugytfytfytcfdycfyrcdtrdrcdtreextredydsadyradrydstrdfrdfrrdecrcxhx"
我想将字符串x
拆分为以下列表
y = [
"yfbrtutcfyugytfyt",
"cfdycfyrcdtrdrcdtreextredy",
"strdfrdfrrdecrcx"
]
我如何通过提供数字3并将其
拆分为长度为3的列表来实现这一点?文本的长度可以是奇数也可以是偶数。您可以使用x[start\u index:end\u index]
从x(不包括最后一个索引)生成一个子字符串。因此,只需指定两个位置并使用它们,例如:
a = len(x) // 3
b = 2* len(x) // 3
s0 = x[:a]
s1 = x[a:b]
s2 = x[b:]
您可以使用python中的split
函数
word = 'yfbrtutcfyugytfytfytcfdycfyrcdtrdrcdtreextredydsadyradrydstrdfrdfrrdecrcxhx'
x=round(len(word)/3)
print([word[i:i+x] for i in range(0, len(word),x)])
它给了你:
['yfbrtutcfyugytfytfytcfdyc', 'fyrcdtrdrcdtreextredydsad', 'yradrydstrdfrdfrrdecrcxhx']
我希望您通过将测试用例分成任意长度的3个部分来创建随机测试用例
您可以尝试使用random
:
import random as rnd
x = "yfbrtutcfyugytfytfytcfdycfyrcdtrdrcdtreextredydsadyradrydstrdfrdfrrdecrcxhx"
len_x = len(x)
idx1 = rnd.randint(0,len_x-1)
idx2 = rnd.randint(idx1,len_x)
l = [x[0:idx1], x[idx1:idx2], x[idx2:len_x]]
l:
['yfbrtutcfyugytfytfytcfdycfyrcdtrdrcdtreextredydsadyrad',
'rydstrdfrdfrr',
'decrcxhx']
这是我对解决你问题的看法
x = "yfbrtutcfyugytfytfytcfdycfyrcdtrdrcdtreextredydsadyradrydstrdfrdfrrdecrcxhx"
length = len(x)
list_x = []
count = 0
for i in range(3):
count += 1
if count == 1:
X = x[:(length // 3)]
list_x.append(X)
elif count == 2:
X = x[(length // 3):((length // 3)*2)]
list_x.append(X)
else:
X = x[((length // 3)*2):length]
list_x.append(X)
print(list_x)
你会得到这些结果:
['yfbrtutcfyugytfytfytcfdyc', 'fyrcdtrdrcdtreextredydsad', 'yradrydstrdfrdfrrdecrcxhx']
我不知道有哪种python内置函数可以做到这一点
下面的函数将一个长字符串分成N个块
def split_string_N(string, N):
chunk_size = len(string) / N
return [string[int(n * chunk_size): int((n+1) * chunk_size)] for n in range(N)]
test_string = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
chunks = split_string_N(test_string, 10)
print(chunks)
['abcde', 'fghij', 'klmno', 'pqrst', 'uvwxyz', 'ABCDE', 'FGHIJ', 'KLMNO', 'PQRST', 'UVWXYZ']
请注意,由于这不能被10等分,因此某些块的长度为5(pqrst),而某些块的长度为6(uvwxyz),在余数滚动到下一个更高的整数时,“自然”发生。此外,它将在N>len(字符串)的位置提供错误的输出。如果需要,可以添加一些逻辑来防止:)Gl
输出:
['yfbrtutc',
'fyugytfy',
'tfytcfdy',
'cfyrcdtr',
'drcdtree',
'xtredyds',
'adyradry',
'dstrdfrd',
'frrdecrc',
'xh']
如果它不是偶数,你希望它的输出是什么?不,我想把它存储在一个列表中,对不起,如果我是偶数的话rude@MaxDev然后你可以把[s0,s1,s2]
加到末尾,把它放在一个列表中。答案可以缩短为a=len(x)//3;b=2*a;[x[:a]、x[a:b]、x[b:]
您可以使用len(string)//N
表示chunk\u大小
,这避免了以后需要int
强制转换。我希望将chunk\u大小保持为带小数的浮点值,这样N*chunk\u大小将提供J和J+1大小的均匀混合。如果使用int()或//,则不会捕获剩余值并缩短总列表。['abcde','fghij','klmno','pqrst','uvwxy','zABCD','EFGHI','JKLMN','OPQRS','TUVWWX']
['yfbrtutc',
'fyugytfy',
'tfytcfdy',
'cfyrcdtr',
'drcdtree',
'xtredyds',
'adyradry',
'dstrdfrd',
'frrdecrc',
'xh']