1

巨大な JavaScript 配列を保持する JavaScript オブジェクトのコードを解析し、それをリスト付きの Python 辞書に変換しようとしています。

現時点では PyYaml を使用していますが、連続したコンマを処理できないため、直接は機能しませんでした (たとえば、'[,,,0,]' で壊れます:ノードの内容が予期されましたが、', ' )。だから私はこれらを置き換えましたが、これはすべて非常に遅いです。これを行うためのより良い、より高速な方法を知っている人がいるかどうか疑問に思っています。JavaScript コードも JSON が有効でないため、JSON デコードは機能しません。

これは、例として js_obj を使用して、上記で説明した、使用しているコードです。

js_obj = "{index: '37',data: [, 1, 2, 3,,,]}"

def repl(match):
    content = re.sub(" ", "",match.group(0))
    length = len(content) - 1
    result = ''
    if content[0] == '[':
        result = '[""'
        length -= 1

    after = ','
    if content[-1] == ']':
        length -= 1
        after += '""]'

    return result + (',""' * length) + after

py_dict = yaml.load(re.sub('\[? *(, *)+\]?', repl, js_obj))
4

1 に答える 1

1

おそらく、JSON を使用して JavaScript からデータを書き込み、それを JSON で Python に読み込む必要があります。YAML は問題ありませんが、私は YAML よりも JSON を好む傾向があります。JSON はより一貫性があります。

JavaScript を解析する必要がある場合は、pyparsing などを検討することをお勧めします。

于 2013-07-27T19:10:56.107 に答える