2013-10-18 92 views
0

我正在寫一個Python腳本,用於驗證父表中每個單元格的值,並將其與查找表中的值進行比較。隱藏字符串。簡單與Unicode,Python

因此,在父表中我有許多列,每列對應於應該在該特定列中的每個記錄中的已知值的查找表。

當我從父表中的值閱讀,會有很多的類型(即Unicode字符串,整數,浮點數,日期等)

的查找表具有相同的多種類型,但是當它是一個字符串,它是一個簡單的字符串,而不是一個unicode字符串,它迫使我將值轉換爲匹配。 (即,如果從父表中的單元格的值是一個unicode字符串,然後我需要創建一個條件語句來測試,如果是unicode的,然後轉換爲簡單的字符串

if isinstance(row.getValue(columnname), unicode): 
    x = str(row.getValue(columnname) 

我的問題是,會更好將unicode字符串轉換爲簡單字符串或反之亦然以匹配類型?爲什麼它會更好?

如果有幫助,我的父表全部在訪問中,查找表都在excel中。認爲真的很重要,但也許我錯過了一些東西。

+0

我不知道擴展ascii代碼,但大多數情況下,字符串和unicodes散列相同 - 即dict ['astr']指向與dict [u'astr']相同的元素。你有沒有發現只是使用它們的問題? –

+0

@Corley。感謝您提供ascii字符。這是我的下一個挑戰,因爲我有一個查找表,其中包含這些值,我將不得不解決。非常好的一點。至於比較字符串與unicode,我試過的測試是這樣的:x = ['a','b','c','d'],r = u't',如果r in x:print'yes 'else:打印'否'結果是否定的。 – Mike

+0

但在你的情況下,正確的答案是'不'...我只是試過這個:x = ['a','b','c','d']。 't'in x - >錯誤(正確)。 'a'in x - >真(正確)u'a'in x - >真。 –

回答

5

將字節串解碼爲unicode會更好。

Unicode數據是規範表示;編碼的字節根據使用的編碼而不同。

您總是希望在您的程序中使用Unicode,然後根據需要將其編碼回字節,以通過網絡發送或將數據寫入文件。

將此與使用日期/時間值進行比較;你會盡快把它們轉換成datetime對象。或圖像;從PNG或JPG加載圖像時,您希望獲得可讓您操作顏色和單個像素的表示,這在使用磁盤上的壓縮圖像格式時非常困難。

+0

嘿謝謝@Martijn。絕對是思想和方向的食物。我最近剛剛學到了一些關於unicoding的知識,但是我遠離專家,所以我確信我需要更多的瞭解如何處理這些值。 – Mike