将 pgsql int 数组转换为 python 数组
convert pgsql int array into python array
我将数字数据 (int) 作为数组存储在 pgsql 中。这些是 x,y,w,h
用于图像中的矩形,例如{(248,579),(1,85)}
在阅读我的 python 代码时(使用 psycopg),我将其作为字符串 (?) 获取。我现在正试图找到从该字符串获取 python 整数数组的最佳方法。
有没有比用','等分割字符串更好的方法...
p.s。我确实尝试了 .astype(int)
构造,但在这种情况下行不通。
假设您无法更改输入格式,您可以删除任何不需要的字符,然后拆分 ,
或执行相反的顺序。
data = '{(248,579),(1,85)}'
data.translate(None, '{}()').split(',')
会给你一个字符串列表。
和
[int(x) for x in data.translate(None, '{}()').split(',')]
也会将它们转换为整数。
如果您的意思是矩形作为点数组存储在 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]
Returns 一个 Python 整数列表
[248, 579, 1, 85]
请注意,虽然 Postgresql 数组默认以 1 为基数,但检索 Point
坐标作为以 0 为基数的数组。
我将数字数据 (int) 作为数组存储在 pgsql 中。这些是 x,y,w,h
用于图像中的矩形,例如{(248,579),(1,85)}
在阅读我的 python 代码时(使用 psycopg),我将其作为字符串 (?) 获取。我现在正试图找到从该字符串获取 python 整数数组的最佳方法。 有没有比用','等分割字符串更好的方法...
p.s。我确实尝试了 .astype(int)
构造,但在这种情况下行不通。
假设您无法更改输入格式,您可以删除任何不需要的字符,然后拆分 ,
或执行相反的顺序。
data = '{(248,579),(1,85)}'
data.translate(None, '{}()').split(',')
会给你一个字符串列表。
和
[int(x) for x in data.translate(None, '{}()').split(',')]
也会将它们转换为整数。
如果您的意思是矩形作为点数组存储在 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]
Returns 一个 Python 整数列表
[248, 579, 1, 85]
请注意,虽然 Postgresql 数组默认以 1 为基数,但检索 Point
坐标作为以 0 为基数的数组。