Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使用递归选择字符串中的特定部分?_Python_Recursion - Fatal编程技术网

Python 如何使用递归选择字符串中的特定部分?

Python 如何使用递归选择字符串中的特定部分?,python,recursion,Python,Recursion,所以我在处理递归 问题是: “早上好” 我必须使用递归打印括号内的所有信息,如下所示:“(43)” 到目前为止,我的代码是: def extractor(myString): if len(myString) == 0: return "" if myString[0] == "(": return myString[0] if myString[0] == ")": return myString[:] el

所以我在处理递归

问题是:

“早上好”

我必须使用递归打印括号内的所有信息,如下所示:
“(43)”

到目前为止,我的代码是:

def extractor(myString):
    if len(myString) == 0:
        return ""



    if myString[0] == "(":
        return myString[0]
    if myString[0] == ")":
        return myString[:]
    else:
        return extractor(myString[1:])
我只能得到括号。我怎样才能改变它呢?

你就快到了:

def extractor(myString):
    if not myString:  # empty strings are falsy
        return ""
    if myString[0] == "(":
        if myString[-1] == ")": # success
            return myString
        else:  # only starts with (, trim from the end
            return extractor(myString[:-1])
    else:  # doesn't start with (, trim from beginning
        return extractor(myString[1:])

如果您感兴趣,这里是您的代码的迭代版本。:)

或:

输出:

mystring = "Lol (234) mate!"
print(iterative_extractor(mystring))
>>> "(234)"

这是工作,但我不能使用任何内置函数,除了len()
str.startswith
str.endswith
是方法,不是函数,但公平地说,我会更改它。非常感谢much@David.Lin对于函数提取器,我的输入是否正确是“(43)”&而不是“早上好(43)”
def iterative_extractor(mystring):
    if not mystring:
        return ""

    while mystring[0] != "(":
        mystring = mystring[1:]

    while mystring[-1] != ")":
        mystring = mystring[:-1]

    return mystring
mystring = "Lol (234) mate!"
print(iterative_extractor(mystring))
>>> "(234)"