我將數字數據(int)作爲數組存儲在pgsql中。對於圖像中的矩形,這些是x,y,w,h
。 {(248,579),(1,85)}
將pgsql int數組轉換爲python數組
當閱讀我的Python代碼(使用psycopg)時,我將它作爲字符串(?)來獲取。我現在試圖找到從該字符串獲取一個Python數組的Python的最佳方式。 有沒有更好的方法比分割','等字符串...
p.s.我確實嘗試了.astype(int)
構造,但在這種情況下不起作用。
我將數字數據(int)作爲數組存儲在pgsql中。對於圖像中的矩形,這些是x,y,w,h
。 {(248,579),(1,85)}
將pgsql int數組轉換爲python數組
當閱讀我的Python代碼(使用psycopg)時,我將它作爲字符串(?)來獲取。我現在試圖找到從該字符串獲取一個Python數組的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]
返回一個Python INT列表
[248, 579, 1, 85]
注意的是,雖然一個PostgreSQL陣列是底座1在默認情況下,將檢索一個Point
座標作爲基數0數組。
非常感謝!我希望走這條路,希望有一個更優雅的方式來做這個python端。不幸的是,pgq模式被鎖定。感謝您的建議 – Santino