Python 函数,该函数接受字符串并返回8个字符字符串的列表

Python 函数,该函数接受字符串并返回8个字符字符串的列表,python,string,Python,String,我对编程很陌生。我需要创建一个函数,它接受任何字符串和一个填充字符,并返回一个包含8个字符串的列表。 例如: >>>segmentString("Hello, World!","-") ['Hello, W', 'orld!---'] 如您所见,字符串有13个字符。该函数拆分为2个字符串,其中第一个字符串包含8个字符,第二个字符串包含5个字符和3个填充字符 到目前为止,我已经知道了如何对少于8个字符的字符串执行此操作,但对于多于8个字符的字符串,如果字符串被拆分,则无法执行此

我对编程很陌生。我需要创建一个函数,它接受任何字符串和一个填充字符,并返回一个包含8个字符串的列表。 例如:

>>>segmentString("Hello, World!","-")
['Hello, W', 'orld!---']
如您所见,字符串有13个字符。该函数拆分为2个字符串,其中第一个字符串包含8个字符,第二个字符串包含5个字符和3个填充字符

到目前为止,我已经知道了如何对少于8个字符的字符串执行此操作,但对于多于8个字符的字符串,如果字符串被拆分,则无法执行此操作,这就是我一直坚持的方法

def segmentString(s1,x):
    while len(s1)<8:
        s1+=x
    return s1
def段字符串(s1,x):

而len(s1)则可以使用稍微修改过的版本:


执行必要的填充。

对@jpp的答案稍加修改后,首先用填充字符填充字符串,这样长度就可以被8整除:

def segmentString(s, c):
    s = s + c * (8 - len(s) % 8)
    return [s[i:i+8] for i in range(0, len(s), 8)]

>>> segmentString("Hello, World!","-")
['Hello, W', 'orld!---']
如果需要可变大小,只需添加一个size参数:

def segmentString(s, c, size):
    s = s + c * (size - len(s) % size)
    return [s[i:i+size] for i in range(0,len(s),size)]

>>> segmentString("Hello, World!","-",4)
['Hell', 'o, W', 'orld', '!---']

我也是编程新手,但我想你可以用这个

Word = "Hello, World!---"
print([Word[i:i+x] for i in range(0, len(Word), x)])
只需将x更改为您想要的任何值。。 退房
希望有帮助。

还有一种可能性:

def segmentString(s1, x):
    ret_list = []
    while len(s1) > 8:
        ret_list.append(s1[:8])
        s1 = s1[8:]
    if len(s1) > 0:
        ret_list.append(s1 + x*(8-len(s1)))
    return ret_list

以下是一个简单的答案,您可以理解,它通过几个简单的ifs解决了您的问题:

a= 'abcdefghijklmdddn'

def segmentString(stuff):
    c=[]
    i=0
    hold=""

    for letter in stuff:
        i+=1
        hold+=letter

        if i%8==0:
            c.append(hold)
            hold=""

    c.append(hold)

    if hold=="":
        print(c)

    else:
        if hold==c[-1]:
            print(c)

        else:
            c.append(hold)
            print(c)

我认为问题在于,单词不是
“Hello,World!--”
,而是
“Hello,World!”
,它需要被分成8个字符的块,当最后一个块不是8个字符时,
-
作为填充,这是编写填充步骤的更简单的方法:
产生x.ljust(n,char)
。无需反复计算所需的填充量。因为它甚至不需要知道
x
的原始长度,所以您可以在循环体上画一行
来生成L[i:i+n].ljust(n,char)
a= 'abcdefghijklmdddn'

def segmentString(stuff):
    c=[]
    i=0
    hold=""

    for letter in stuff:
        i+=1
        hold+=letter

        if i%8==0:
            c.append(hold)
            hold=""

    c.append(hold)

    if hold=="":
        print(c)

    else:
        if hold==c[-1]:
            print(c)

        else:
            c.append(hold)
            print(c)