2016-10-03 61 views
0

我將數字數據(int)作爲數組存儲在pgsql中。對於圖像中的矩形,這些是x,y,w,h{(248,579),(1,85)}將pgsql int數組轉換爲python數組

當閱讀我的Python代碼(使用psycopg)時,我將它作爲字符串(?)來獲取。我現在試圖找到從該字符串獲取一個Python數組的Python的最佳方式。 有沒有更好的方法比分割','等字符串...

p.s.我確實嘗試了.astype(int)構造,但在這種情況下不起作用。

回答

1

假設您無法更改輸入格式,您可以刪除任何不需要的字符,然後拆分,或按照相反的順序。

data = '{(248,579),(1,85)}' 
data.translate(None, '{}()').split(',') 

會給你一個字符串列表。

而且

[int(x) for x in data.translate(None, '{}()').split(',')] 

會,以及將它們轉換爲整數。

+0

非常感謝!我希望走這條路,希望有一個更優雅的方式來做這個python端。不幸的是,pgq模式被鎖定。感謝您的建議 – Santino

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數組。