Psycopg2 から返されたネストされた配列の解析に問題があります。私が取り組んでいるDBは、ネストされた配列を値として持つことができるレコードを返します。Psycopg は、そのような値の外側の配列のみを解析します。
私の最初のアプローチはコンマで文字列を分割することでしたが、結果内の文字列にもコンマが含まれていることがあり、アプローチ全体が使用できなくなるという問題に遭遇しました。次の試みは、正規表現を使用して文字列内の「コンポーネント」を見つけることでしたが、数字を検出できないことに気付きました (数字は文字列内でも発生する可能性があるため)。
現在、これは私のコードです:
import re
text = '{2f5e5fef-1e8c-43a2-9a11-3a39b2cbb45e,"Marc, Dirk en Koen",398547,85.5,-9.2, 62fe6393-00f7-418d-b0b3-7116f6d5cf10}'
r = re.compile('\".*?\"|[\w]{8}-[\w]{4}-[\w]{4}-[\w]{4}-[\w]{12}|^\d*[0-9](|.\d*[0-9]|,\d*[0-9])?$')
result = r.search(text)
if result:
result = result.groups()
この結果は次のようになります。
['2f5e5fef-1e8c-43a2-9a11-3a39b2cbb45e', 'Marc, Dirk en Koen', 398547, 85.5, -9.2, '62fe6393-00f7-418d-b0b3-7116f6d5cf10']
この機能を汎用にしたいので、引数の順序について確信が持てません。サポートされている型が文字列、uuid、(符号付き) 整数、(符号付き) 10 進数であることだけは知っています。
間違ったアプローチを使用していますか? または、誰かが私を正しい方向に向けることができますか?
前もって感謝します!