如何分割的python字符串中的每个第n-1 + n个字符
问题描述:
例如,假设我们有一个字符串:如何分割的python字符串中的每个第n-1 + n个字符
'abcdefg'
,我们需要得到像这样的列表:
['ab', 'bc', 'cd', 'de', 'ef', 'fg']
我们应该无法用任何一种库
这里是我的解决方案:
def str_split(s):
s = iter(s)
ch1=''
ch2=''
chars_list=[]
while True:
try:
ch1 = ch2 or next(s)
ch2 = next(s)
chars_list.append(ch1 + ch2)
except:
break
return chars_list
我不知道有更好的解决方案吗?也许有可能使用列表理解,如here?
答
您可以简单地使用zip()
和list comprehension:
chars_list = [ch1 + ch2 for ch1, ch2 in zip(s, s[1:])]
更多一般来说,如果您需要任何解决方案n
:
n = 3
chars_list = [s[i:i+n] for i in range(0, len(s) - n + 1, n - 1)]
# ['abc', 'cde', 'efg']
+0
zip运作良好。这是一个非常优雅和强大的解决方案。谢谢! –
答
你可以试试这个(哈克)解决方案:
def str_split(s):
return [s[start:end] for start, end in enumerate(range(2, len(s)+1))]
Delgan的压缩和解解决方案似乎更优雅,虽然:)
@ErikR对我来说,这些块在这里是重叠的... – schwobaseggl