2016-05-27 43 views
0

我從調查猴子CSV數據的工作。問題是他們使用的列名對於大多數數據庫CSV數據導入例程來說太長了。從字面上看,列名是你在調查中提出的問題。因此,它可能需要一些時間才能夠縮小下來,比方說,64個字符的數據庫列名。 Python例程看起來像什麼將一個問題縮小爲幾個字和/或字符?我不能只是做一些像刪除元音這樣的東西,因爲在大多數情況下這些元音仍然會太長。思考?Python例程縮寫語句?

+1

你的意思是,除了只是把字符串的第一個'N'字符? – CoryKramer

+0

@CoryKramer他們的問題。所以,如果你只是第一個64個字符,你會得到重複的名稱,如「你的意見是什麼」 –

+0

那麼我想你必須有一個唯一的標識符。無論是簡單地通過問題編號(例如'question_1','question_2'等)存儲它們或者散列字符串或其他東西,但後一個選項顯然不會導致任何人的可讀性。 – CoryKramer

回答

0

如果你只需要頭是唯一的,小於64(使用的Postgres順便說一句嗎?)就用一個哈希值。

from hashlib import md5 

columns = ['reallylongcolumname1', 'reallylongcolumname2'] 
out = {} 
for c in columns: 
    h = md5(c).hexdigest() 
    # Use 'h' as your new column header! 
    out.update({c : h}) 

將字典「保存」在某處,以便日後解密。

+0

所以DB需要一個分貝,令人叫絕。 – zaph

+0

我沒有說這是一個優雅的解決方案!更好的解決方案當然是使用某種弱雙向加密。隨時在這裏提供建議! – Thtu