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

时间:2018-11-10 01:28:58

标签: python string

我对编程很陌生。我需要创建一个接受任何字符串和填充字符并返回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

如何分割字符串?

5 个答案:

答案 0 :(得分:3)

您可以使用this chunking recipe的稍微修改的版本:

def chunks(L, n, char):
    for i in range(0, len(L), n):
        yield L[i:i + n].ljust(n, char)

res = list(chunks('Hello, World!', 8, '-'))

['Hello, W', 'orld!---']

str.ljust执行必要的填充。

答案 1 :(得分:1)

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

如果您需要将大小更改为变量,则只需添加一个大小参数即可:

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

答案 2 :(得分:1)

还有另一种可能性:

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

答案 3 :(得分:0)

我也是编程的新手,但我认为您可以使用此...

Word = "Hello, World!---"
print([Word[i:i+x] for i in range(0, len(Word), x)])

只需将x更改为所需的任何值即可。 查看https://www.google.co.in/amp/s/www.geeksforgeeks.org/python-string-split/amp/ 希望对您有所帮助。

答案 4 :(得分:0)

这是您可以理解的简单答案,可以通过几个简单的if来解决您的问题:

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)