私は(1よりよいがある場合、またはその他の方法)という文字列を分割するために、正規表現を見つけようとしていますスプリットSQLは、キーと値のペアに文を挿入文字列として次の文を考える
stmt = "insert into table (col1, col2, col3) values (100, '() string with parantheses()', 2.3);"
私は、後に列名を持つdicionaryを記入し、これまでのところ、私は好きではない(というか、私が唯一の正規表現を使用したソリューションがあります信じて、次のソリューションを持っている
d = { "col1" : "100", "col2" : "'() string with parantheses()'", "col3" : "2.3" }
値ができることを["(col1, col2, col3)", "(100, '() string with parantheses()', 2.3)"]
ようなリストへ同じことをする)。
re.findall("\([^\r\n]*\)", stmt)[0].split("values")
# from here on I would have to parse the two strings and fill a dict
私は唯一の正規表現を使用して'values'
で文字列を分割する必要はありません解決策を見つけることができないのです。私の主な問題は、値が入っている2番目のparantheses文字列が文字列にparantheses自身を含むかもしれないということです。
これは有望ではありますが、行3( 'pre.partition( 'table')')でパーティション化するのはunfotunlyです。これは、実際のテーブル名であり、ステートメントのキーワードではないためです。申し訳ありませんが、テーブル名の例としては悪い選択でした。 – ap0
@ ap0 d0h - はい...愚かな私...代わりにかっこを使用することができます - コード –
@ ap0を更新しました。https:// sqlparseもご覧ください。readthedocs.io/en/latest/intro/ - 私はそれを使って素早く遊びました。仕事をより柔軟にするように見えますが、解析された構造をナビゲートする作業をする必要があります。テキストの書式を保証することができます。 –