2017-07-07 48 views
0

我已閱讀關於此主題的上一個問題,但沒有提到字節。我有字節串像一個熊貓數據框下面的(?):\u0393\u03b9\u03ce\u03c1\u03b3\u03bf\u03c2 u039d\u03c4\u03b1\u03bb\u03ac\u03c1\u03b1\u03c2和我試圖將它們轉換爲人類可讀的輸出。文本的語言是希臘語,數據是從JSON文件中讀取的(json.load/loads沒有什麼幫助,也沒有pd.read_json)。解碼字節和SyntaxError:續行字符後出現意外字符

當我試圖打印這樣一個對象時,它打印字節。

示例代碼打印:

lst = ['\\u0393\\u03b9\\u03ce\\u03c1\\u03b3\\u03bf\\u03c2 \\u039d\\u03c4\\u03b1\\u03bb\\u03ac\\u03c1\\u03b1\\u03c2', 
    '\\u0393\\u03b9\\u03ce\\u03c1\\u03b3\\u03bf\\u03c2 \\u039d\\u03c4\\u03b1\\u03bb\\u03ac\\u03c1\\u03b1\\u03c2', 
    '\\u0393\\u03b9\\u03ce\\u03c1\\u03b3\\u03bf\\u03c2 \\u039d\\u03c4\\u03b1\\u03bb\\u03ac\\u03c1\\u03b1\\u03c2'] 

df= pd.DataFrame(lst, columns=["some_bytestrings"]) 

print(df["some_bytestrings"]) 
# prints: \u0393\u03b9\u03ce\u03c1\u03b3\u03bf\u03c2 \u0... 

print(df['some_bytestrings'].values[0]) 
# prints: \u0393\u03b9\u03ce\u03c1\u03b3\u03bf\u03c2 \u039d\u03c4\u03b1\u03bb\u03ac\u03c1\u03b1\u03c2 

# eval seems to work for some previous data, don't know why 
print(eval(dfsmall['some_bytestrings'].values[0])) 
# ERROR ARISES HERE 

print('\\u0393\\u03b9\\u03ce\\u03c1\\u03b3\\u03bf\\u03c2 \\u039d\\u03c4\\u03b1\\u03bb\\u03ac\\u03c1\\u03b1\\u03c2') 
# prints \u0393\u03b9\u03ce\u03c1\u03b3\u03bf\u03c2 \u039d\u03c4\u03b1\u03bb\u03ac\u03c1\u03b1\u03c2 

print(print(dfsmall['some_bytestrings'].values[0].encode().decode())) 
# decoding encoding doesn't work, it prints: \u0393\u03b9\u03ce\u03c1\u03b3\u03bf\u03c2 \u039d\u03c4\u03b1\u03bb\u03ac\u03c1\u03b1\u03c2 

需要注意的是,如果我把打印輸出和打印一遍,原來罰款:

print("\u0393\u03b9\u03ce\u03c1\u03b3\u03bf\u03c2 \u039d\u03c4\u03b1\u03bb\u03ac\u03c1\u03b1\u03c2") 
# prints: 'Γιώργος Νταλάρας' 

因爲它在我看來,它必須做如何Python的處理雙斜線(\\),但我似乎無法變通解決這一點,因爲像string.replace("\\\\", "\\")方法沒有幫助。

回答

2

您已經標記了「byte_strings」(bytes類型),但是從輸出中它們實際上是包含轉義序列的文本字符串(str類型)。

幸運的是,蟒包括用於字符串轉義稱爲unicode_escape進行解碼的編解碼器。

您可以使用codecs模塊解碼這些串 - 例如:

>>> codecs.decode('\\u0393\\u03b9\\u03ce\\u03c1\\u03b3\\u03bf\\u03c2 \\u039d\\u03c4\\u03b1\\u03bb\\u03ac\\u03c1\\u03b1\\u03c2', 'unicode_escape') 
'Γιώργος Νταλάρας' 
相關問題