どのように文字列を解析し、ネストされた配列を返すには?

私は、文字列を受け取り、配列内の各項目は、文字、または別のそのような配列である配列を返す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']]
 
この記事では、最初に登場したPythonのブラックホールネット、パーク同時に更新ブログ

おすすめ

転載: www.cnblogs.com/pythonzhichan/p/11495264.html