我将数据数据(int)存储在pgsql中作为数组。对于图像中的矩形,这些是x,y,w,h
,例如{(248,579),(1,85)}
当读取我的python代码(使用psycopg)时,我将其作为字符串(?)。我现在正在尝试从该字符串中找到获取python数组的最佳方法。 有没有比将字符串拆分为更好的方法,''等等...
P.S。我确实尝试了.astype(int)
构造,但在这种情况下不会起作用。
答案 0 :(得分:1)
假设您无法更改输入格式,您可以删除所有不需要的字符,然后拆分,
或执行相反的顺序。
data = '{(248,579),(1,85)}'
data.translate(None, '{}()').split(',')
会给你一个字符串列表。
和
[int(x) for x in data.translate(None, '{}()').split(',')]
也会将它们翻译成整数。
答案 1 :(得分:0)
如果你的意思是矩形作为点数组存储在Postgresql中:
query = '''
select array[(r[1])[0],(r[1])[1],(r[2])[0],(r[2])[1]]::int[]
from (values ('{"(248,579)","(1,85)"}'::point[])) s (r)
'''
cursor.execute(query)
print cursor.fetchone()[0]
返回Python int列表
[248, 579, 1, 85]
请注意,默认情况下,Postgresql数组的基数为1时,Point
坐标将被检索为基数为0的数组。