尝试使用递归将文件路径拆分为元组
Trying to split file path into a tuple using recursion
我正在尝试进行递归练习,但遇到了一个问题。我需要拆分一个
文件地址到一个元组中,我最终在一个元组中得到一个元组。
下面是我想出的,当我测试它时,它 returns 这个:
输入路径:C:/Users:/Games
('C:', ('Users:', 'Games'))
我要:('C:','Users:','Games')
def split_path(s):
path = ()
if s.find("/") == -1:
path= (s)
else:
location = s.find("/")
path += (s[:location],)
path += (split_path(s[location+1:]),)
return path
您可能希望将靠近函数最后一行的行更改为以下内容:
path.extend(split_path(s[location+1:]))
顺便说一句,你为什么不使用类似的东西:
path = s.split('/')
你真的很接近。仔细看看你的最后一行:
path += (split_path(s[location+1:]),)
您将元组函数的 return 值放入另一个元组中。
编辑补充:我刚刚注意到一个非常细微的错误,可能导致您将 return 值放入元组中:
path = (s)
应该是
path = (s,)
我会这样写:
def split_path(s):
index = s.find('/')
if index == -1:
return (s,)
else:
return (s[:index],) + split_path(s[index+1:])
我正在尝试进行递归练习,但遇到了一个问题。我需要拆分一个 文件地址到一个元组中,我最终在一个元组中得到一个元组。 下面是我想出的,当我测试它时,它 returns 这个:
输入路径:C:/Users:/Games
('C:', ('Users:', 'Games'))
我要:('C:','Users:','Games')
def split_path(s):
path = ()
if s.find("/") == -1:
path= (s)
else:
location = s.find("/")
path += (s[:location],)
path += (split_path(s[location+1:]),)
return path
您可能希望将靠近函数最后一行的行更改为以下内容:
path.extend(split_path(s[location+1:]))
顺便说一句,你为什么不使用类似的东西:
path = s.split('/')
你真的很接近。仔细看看你的最后一行:
path += (split_path(s[location+1:]),)
您将元组函数的 return 值放入另一个元组中。
编辑补充:我刚刚注意到一个非常细微的错误,可能导致您将 return 值放入元组中:
path = (s)
应该是
path = (s,)
我会这样写:
def split_path(s):
index = s.find('/')
if index == -1:
return (s,)
else:
return (s[:index],) + split_path(s[index+1:])