字符串的split方法只接受分隔符的参数,但是如何通过每个(或每个其他等)字母轻松分割?这种方法可以按每个字母分割,但对于一个简单的任务来说似乎很笨拙。
a=' '.join(string.ascii_lowercase).split()
我想一个函数可以做到这一点:
def split_index(string,index=1):
split=[]
while string:
try:
sect = string[:index]
string = string[index:]
split.append(sect)
except IndexError:
split.append(string)
return split
print(split_index('testing')) # ['t', 'e', 's', 't', 'i', 'n', 'g']
print(split_index('testing',2)) # ['te', 'st', 'in', 'g']
如果之前没有人希望这样做,或者如果没有更简单的内置方法,我会感到惊讶。但我以前错了。如果这样的事情不值得,或者我错过了一个细节,那么问题就可以删除/删除。
答案 0 :(得分:0)
字符串是字符的可迭代,因此将其拆分为字符就像迭代字符一样简单。这样做的一种方法就是将其提供给内置的list()
:
list("testing") # ['t', 'e', 's', 't', 'i', 'n', 'g']
文档还为grouper()
方法提供了一个方法,它将采用迭代并将其分组为给定大小的块,因为字符串是可迭代的,这只适用于它们。这可以非常有效,因为它很懒惰并且使用快速itertools
函数:
import itertools
def grouper(iterable, n, fillvalue=None):
"Collect data into fixed-length chunks or blocks"
# grouper('ABCDEFG', 3, 'x') --> ABC DEF Gxx"
args = [iter(iterable)] * n
return itertools.zip_longest(*args, fillvalue=fillvalue)
E.g:
groups = list(grouper("testing", 2)) # [('t', 'e'), ('s', 't'), ('i', 'n'), ('g', None)]]
["".join(char for char in group if char) for group in groups] # ['te', 'st', 'in', 'g']
显然,如果你只是迭代字符,你就不需要制作一个列表 - 直接遍历字符串或grouper()
iterable。
答案 1 :(得分:0)
您可以尝试这样做:
string = "testing"
def splitByN(string,n):
return [string[i:i+n] for i in range(0,len(string),n)]
print(splitByN(string,2))
输出:
['te', 'st', 'in', 'g']