特定场景下的字符串切片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
如果您只是遍历所有内容并丢弃带有不需要符号的结果,则可以将循环展开一级。
我有一个字符串,我想将其拆分为仅包含文本(无逗号、空格、点等)的新字符串。每个新字符串的长度必须是可变的 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
如果您只是遍历所有内容并丢弃带有不需要符号的结果,则可以将循环展开一级。