查找我的代码中的漏洞(拆分方法)



这里我尝试在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

相关内容

  • 没有找到相关文章

最新更新