2024-09-25 12:24:18 发布
网友
我试图将一个以字符串形式给出的路径分割成子部分,使用“/”作为分隔符,递归地将其传递给元组。例如:“E:/John/2012/practice/question11”应该是('E:','John','2012','practice','question11')。在
所以我把不包括“/”的每个字符都传递到一个元组中,但这并不是我希望子部分的连接方式,如示例所示。这是家庭作业中的一个练习题,希望能在我学习递归的过程中得到帮助。在
非常感谢你
像这样的东西
>>> import os >>> s = "E:/John/2012/practice/question11" >>> os.path.split(s) ('E:/John/2012/practice', 'question11')
注意os.path.split()没有像{}那样分割整个路径
os.path.split()
编辑:虽然问题是关于Windows路径的。对于unix/linux路径(包括以“/”开头的路径)进行修改非常容易
>>> def rec_split(s): ... rest, tail = os.path.split(s) ... if rest in ('', os.path.sep): ... return tail, ... return rec_split(rest) + (tail,)
您的错误不在递归中,而是在连接递归结果时所做的操作。假设您已经到达('E:', 'John', '2012', 'prac'),下一个字符是't';您不想将't'追加到递归结果中,而是将其附加到递归结果的最后一个单词。类似地,当您到达一个分隔符时,您希望将新单词初始化为空。在
('E:', 'John', '2012', 'prac')
't'
当你做递归时,你会(几乎)总是有两种情况:递归的和终端的。终端通常很简单,而且你做得很正确(如果没有字符串,就没有单词)。但是我发现如果你试着用一个递归的例子,在上面的计算过程中的某个地方,来精确地计算出需要发生什么,这会有很大的帮助。在
像这样的东西
注意}那样分割整个路径
^{2}$os.path.split()
没有像{编辑:虽然问题是关于Windows路径的。对于unix/linux路径(包括以“/”开头的路径)进行修改非常容易
您的错误不在递归中,而是在连接递归结果时所做的操作。假设您已经到达
('E:', 'John', '2012', 'prac')
,下一个字符是't'
;您不想将't'
追加到递归结果中,而是将其附加到递归结果的最后一个单词。类似地,当您到达一个分隔符时,您希望将新单词初始化为空。在当你做递归时,你会(几乎)总是有两种情况:递归的和终端的。终端通常很简单,而且你做得很正确(如果没有字符串,就没有单词)。但是我发现如果你试着用一个递归的例子,在上面的计算过程中的某个地方,来精确地计算出需要发生什么,这会有很大的帮助。在
相关问题 更多 >
编程相关推荐