def split(string,x):
if string == "":
return ""
if string[0] == x :
return split(string[1:],x)
return string[0]+[split(string[1:],x)]
我想给这个func一个像“ballooolam”和“l”这样的字符串,我希望这个函数给我[“ba”,“ooo”,“am”] 3天我在想它
答案 0 :(得分:0)
在python中分割字符的正确方法是使用split
内置函数。它将比你在python中本地实现的任何东西更多更快,因为它是一个已编译的C扩展,就像此时所有内置的一样:
lst = "ballooolam".split("l")
但是,正如本question中所讨论的,这可能不会完全做您期望的事情。当有长度为零的标记时,split
会在列表中留下空字符串; I.E.如果分隔符位于字符串中的第一个/最后一个位置,或者两个分隔符彼此相邻。这样做word = 'l'.join(lst)
将返回原始值;如果没有空字符串,您将获得'balooolam'
而不是'ballooolam'
。如果要删除这些空字符串,可以使用列表解析轻松完成:
def splitter(string, x):
return [token for token in string.split(x) if token]
if token
将拒绝任何字符串,这些字符串是空字符串。如果您还希望从最终列表中排除仅限空格的字符串,则可以通过一些调整来实现:
def splitter(string, x):
return [token for token in string.split(x) if token.strip()]
strip()
从字符串中删除任何前导/尾随空格。在只有空格的字符串的情况下,这将导致一个空字符串,这将是假的。