Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/276.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.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_String_List - Fatal编程技术网

有没有一种方法可以将字符串分割成块并存储在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']