这里我尝试在Python中重新创建str.split()
方法。我已经尝试并测试了这段代码,它运行良好,但我正在寻找漏洞来纠正。如果有的话,一定要检查并给出反馈。编辑:很抱歉没有弄清楚,我想问你们代码不起作用的例外情况。我还试图想出一种更精细的方法,而不看源代码。
def splitt(string,split_by = ' '):
output = []
x = 0
for i in range(string.count(split_by)):
output.append((string[x:string.index(split_by,x+1)]).strip())
x = string.index(split_by,x+1)
output.append((((string[::-1])[:len(string)-x])[::-1]).strip())
return output
实际上您的代码存在一些问题:
- 通过从
x+1
进行搜索,您可能会在字符串的开头错过split_by
的出现,导致index
在最后一次迭代中失败 - 你给
index
打电话的次数比必要的要多 strip
只有在分隔符是空白的情况下才有意义,即使这样也可能删除超出预期的内容,例如拆分行时的尾随空格- 相反,将
len(split_by)
添加到对index
的下一次调用的偏移量中 - 无需在最后一步中反转字符串两次
这应该可以解决这些问题:
def splitt(string,split_by=' '):
output = []
x = 0
for i in range(string.count(split_by)):
x2 = string.index(split_by, x)
output.append((string[x:x2]))
x = x2 + len(split_by)
output.append(string[x:])
return output