簡體   English   中英

獲取字符串並返回8個字符的字符串列表的函數

[英]Function that takes a string and returns a list of 8-character strings

我對編程很新。 我需要創建一個函數,它接受任何字符串和填充字符,並返回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 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執行必要的填充。

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

另一種可能性:

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

我也是編程的新手,但我想你可以用這個...

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/希望它有所幫助。

這是一個簡單的答案,你可以理解,用幾個簡單的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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM