特定场景下的字符串切片Python

String slicing in specific scenarios Python

我有一个字符串,我想将其拆分为仅包含文本(无逗号、空格、点等)的新字符串。每个新字符串的长度必须是可变的 n。切片必须经过每个可能的组合。 这意味着,例如,func('banana pack', 3) 的输入将导致 ['ban'、'ana'、'nan'、'ana'、pac'、'ack'] .到目前为止,我设法实现的是:

def func(text, n):
    text = text.lower()
    text = text.translate(str.maketrans("", "", " .,"))
    remainder = len(text) % n
    split_text = [text[i:i + n] for i in range(0, len(text) - remainder, n)]
    if remainder > 0:
        split_text.append(text[-n:])
    return split_text

首先,我通过删除 ',''.' 来清理输入。然后将输入按空格拆分,以仅考虑完整的单词。对于每个单词,都会附加这些部分。

def func(text,n):
    text=text.replace('.','').replace(',','') #Cleanup
    words = text.split() #split words
    output = []
    for word in words:
        for i in range(len(word)-n+1):
            output.append(word[i:i+n])
    return output

如果您只是遍历所有内容并丢弃带有不需要符号的结果,则可以将循环展开一级。