2017-04-09 33 views
0

私は本物の問題があります。文字列入力の例を解析する必要があります。(((10)40((25)30(35)))50((70(80)40))Pythonで括弧で囲まれた文字列(整数)を解析する

はいこれはツリーのコードです。特定の ノードを見つけるためにいくつかのチェックを行う必要がありますが、今のところ私はこのツリーのディレクトリまたはリストを作成しています。 私は自分で小切手を管理することができます。おもう。

などがあり、これにより実行可能な出力が得られます。 {(0:50)、(1:40,60)...}でも単に があるいくつかのリストに追加する右の整数を取得

altho 最良のシナリオはそうのようなディレクトリのようなものになるだろうと働く。

私は同じように何かをコーディングすることを何時間も試みてきましたが、私はいつも立ち往生しています。 私の最善の策は、このコードでした: デフparsing_input(string_brackets):出力と

def parsing_input(string_brackets): 

stack=[] 
counter = -1 
for character in string_brackets: 
    if character == '(': 
     counter += 1 
     stack.append('') 
    elif character==')': 
     counter -= 1 
    else: 
     stack[counter] += character 
return stack 

[ '50'、 '4060'、 '103070'、 '253580'、 '40'、

これは機能しませんが、私の整数は異なるサイズになる可能性があります。また、私はそれらの空の文字列が好きではありません。 コードが遅くなる可能性があります。私は正直言って何時間も努力してきた。

EDIT:私は外部ライブラリを使用することはできません。私はいくつかのライブラリがこれを簡単に行うことができますが、私はそれらを使用できないことを認識しています。

答えて

0

現在の形式のコードでは、減算する前にコンマを追加して区切りを追加することができます。空のバケットを削除するまでは、スタックを2回目に実行することができます。また、2回目の実行では、2番目の変数として必要なディレクトリを作成できます。

+0

私はurコードを試しましたが、深みのあるディレクトリを作成することができましたが、私のチェックではツリーの構造を知る必要があります。各子供の親。私の現在の入力シーケンスでは、どこに来るのか分からない。私は別の入力シーケンスコードが必要です –

関連する問題