【发布时间】:2011-06-27 00:45:11
【问题描述】:
我在解析 Psycopg2 返回的嵌套数组时遇到问题。我正在处理的数据库返回可以将嵌套数组作为值的记录。 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、(有符号)整数和(有符号)小数。
我是否使用了错误的方法?或者谁能指出我正确的方向?
提前致谢!
【问题讨论】:
-
字符串是否也可以包含 " 或 ',也许是那些的转义版本?
-
理论上 psycopg2 应该解析嵌套数组。你能给我(fog@initd.org)一些测试数据吗?
-
是的:这项工作:>>> cur.execute("select array[array['a','b'],array['c','d']];") > >> cur.fetchone() ([['a', 'b'], ['c', 'd']],) 如果你能提供一个失败的例子那就太好了。
标签: python regex arrays csv psycopg2