我使用內置的分裂功能,我有一個問題:如何使用utf8編碼進行分割?
>>> data = "test, ąśżźć, test2"
>>> splitted_data = data.split(",")
>>> print splitted_data
['test', ' \xc4\x85\xc5\x9b\xc5\xbc\xc5\xba\xc4\x87', ' test2']
這是爲什麼發生?我應該怎麼做才能防止這種情況?
的Python 2.7.1
我使用內置的分裂功能,我有一個問題:如何使用utf8編碼進行分割?
>>> data = "test, ąśżźć, test2"
>>> splitted_data = data.split(",")
>>> print splitted_data
['test', ' \xc4\x85\xc5\x9b\xc5\xbc\xc5\xba\xc4\x87', ' test2']
這是爲什麼發生?我應該怎麼做才能防止這種情況?
的Python 2.7.1
內部表示這是純粹從str.__repr__
得到的輸出(調用repr()
在一根繩子上)。 \xc4
等只是它存儲的實際方式。當您打印它,它仍然是相同的:
>>> data = "test, ąśżźć, test2"
>>> data
'test, \xc4\x85\xc5\x9b\xc5\xbc\xc5\xba\xc4\x87, test2'
>>> print data
test, ąśżźć, test2
list.__str__
和list.__repr__
使用字符串的表示,但如果你訪問它裏面的項目,它仍然是正確的:
>>> splitted_data = data.split(",")
>>> splitted_data
['test', ' \xc4\x85\xc5\x9b\xc5\xbc\xc5\xba\xc4\x87', ' test2']
>>> print splitted_data[1]
ąśżźć
當你的片斷作品(逃逸是多麼repr
作品),你不應該把字節串爲文本。先解碼,稍後再操作。
data = u"test, ąśżźć, test2" # or "test, ąśżźć, test2".decode('utf-8')
split_data = data.split(u",")
您正在尋找的splitted_data
data = "test, åäö, test2"
data
'test, \xe5\xe4\xf6, test2'
data.split()[1]
'\xe5\xe4\xf6,'
print data.split()[1]
åäö,
至於說每個人都否則,你的程序沒有任何問題。由於Python選擇的打印列表的展示不是包含字符串的列表,因此您的期望得不到滿足。與以下內容進行比較:
>>> data = "test, ąśżźć, test2"
>>> a,b,c = data.split(",")
>>> print a,b,c
test ąśżźć test2
您對此有何看法?嘗試'print splitted_data [1]'您正在查看內部表示 –