当前位置: 首页 > 面试题库 >

如何解析字符串并返回嵌套数组?

薛彭薄
2023-03-14
问题内容

我想要一个带字符串并返回一个数组的Python函数,该数组中的每个项目都是字符,或者是这种类型的另一个数组。嵌套数组在输入字符串中以’(’开始,以’)’结尾。

因此,该函数将如下所示:

1) foo("abc") == ["a", "b", "c"]
2) foo("a(b)c") == ["a", ["b"], "c"]
3) foo("a(b(c))") == ["a", ["b", ["c"]]]
4) foo("a(b(c)") == error: closing bracket is missing
5) foo("a(b))c") == error: opening bracket is missing
6) foo("a)b(c") == error: opening bracket is missing

注意:我更喜欢纯功能的解决方案。


问题答案:
def foo(s):
    def foo_helper(level=0):
        try:
            token = next(tokens)
        except StopIteration:
            if level != 0:
                raise Exception('missing closing paren')
            else:
                return []
        if token == ')':
            if level == 0:
                raise Exception('missing opening paren')
            else:
                return []
        elif token == '(':
            return [foo_helper(level+1)] + foo_helper(level)
        else:
            return [token] + foo_helper(level)
    tokens = iter(s)
    return foo_helper()

和,

>>> foo('a((b(c))d)(e)')
['a', [['b', ['c']], 'd'], ['e']]


 类似资料:
  • 我正在编写一个接收SQS队列对象的Lambda函数。SQS将json对象作为字符串值发送给SQS。 当我在Lambda中接收到请求时,AWS已经将其包装成一个新的JSON,由于JSON是一个字符串值,因此它将成为无效的JSON。 现在body.message不是有效的JSON。我尝试将它解析为一个原始值,比如如何使用Jackson在对象中包含原始JSON?但它总是抱怨,它在期待逗号分隔对象的地方找

  • 问题内容: Java中有没有一种方法可以从以下数学表达式获得结果: 另一方面,解析算术表达式的最佳方法是什么? 问题答案: 你可以将其传递给如下所示: 你将要确保评估的字符串来自受信任的来源,并采取通常的预防措施,否则,它将立即起作用。 如果你想采用更复杂(但更安全)的方法,则可以使用ANTLR(我怀疑这是一个数学语法的起点),然后实际自己编译/解释该语句。

  • 如何解析嵌套列表的JSON字符串以在pyspark中触发数据帧? 输入数据帧: 预期产出: 示例代码: 有几个例子,但我不知道如何做到这一点: > < li> 如何在pyspark中解析和转换spark数据帧行中的json字符串 如何从pyspark中的spark数据帧行转换具有多个键的JSON字符串?

  • 我需要使用Jackson解析字符串数组(标识符)。我在互联网上没有找到任何例子,所有的例子都展示了如何反序列化某个类的对象数组,但我只需要解析一个字符串数组(不需要为它编写模型类),我该怎么做呢?JSON示例:

  • 返回类似于:。我猜与的参数有关。我不明白是什么意思,使用的时间单位是什么?在这种情况下,它可能是微秒,但我也看到和作为单位;但是,我在文件中找不到解释。

  • 问题内容: 为了转换字符串,我将其转换为字节,如下所示: 为了转换,我做了:显然不起作用。我将如何转换回去? 问题答案: 您原来的城市名称中有哪些字符?尝试这样的UTF-8版本: