在python 2.x中,存在稱爲unicode
的unicode字符串和稱爲str
的字節串,這些字符串經常被誤用於文本數據,因爲它是默認值。幸運的是,python 3.x通過默認py2 unicode
解決了這個問題,並讓用戶在使用二進制數據時選擇py2 str
或編碼文本。但它也將py2 unicode
更名爲str
,py2 str
更改爲bytes
。在python 3.x和2.x中統一區分str/unicode和bytes/str的方法是什麼?
我知道有很多方法來編寫代碼來區分它們,但我想知道其他方法是最好的方法以及爲什麼和可能學習方法I不知道,但。我也知道,有些方法可能更適合某些情況,所以請隨時在您的答案中公開所有內容。
這個問題也讓我任何人選擇最好的選擇,但我被提醒說,這是一個意見問題。
因此,這裏所使用的「」類型和執行它是unicode的類型知道我的方式...
:
from __future__ import unicode_literals
if isinstance(string, type("")):
...
鳳雲NameError異常,並使用特定版本的代碼。
思,似乎沒有正常工作...
使用getattr()
檢查encode()
和decode()
方法像Python 2.x中似乎使用了兩種類型的兩種方法。
正如我不能添加任何回答任何更多的,這裏就是我終於要使用:
# Ensure compatibility with Python < 2.7 (2.7 uses bytes as an alias for str).
if 'bytes' not in vars():
bytes = str
if isinstance(name, bytes):
...byte string...
else:
...unicode string...
收集意見的問題是偏離主題;有些人還提出了這樣的問題,表明缺乏研究,因此倒下了。 (我自己,我只是投票結束。) – chepner 2014-09-19 13:12:29
一個更好的問題可能是「我選擇了方法1,與方法2相比它有什麼缺點嗎?」簡單地說,你知道一些選項並不能證明你實際上*知道這些選項,而這種語言常常被用來掩蓋缺乏研究的情況。 – chepner 2014-09-19 13:16:44
夠公平的,我會添加已知的方法來解決這個問題。我只是不認爲這樣的問題能夠得到解決,可能有三位可能對答案感興趣的人所提出的問題是以任何方式幫助交換內容的方式。但在編輯它之前,請隨時繼續競賽以解決問題。 – 2014-09-19 13:19:13