2012-06-24 289 views
10

我從表示爲u'\xd0\xbc\xd0\xb0\xd1\x80\xd0\xba\xd0\xb0'的函數中獲取字符串,但要處理它,我需要它作爲字節串(如'\xd0\xbc\xd0\xb0\xd1\x80\xd0\xba\xd0\xb0')。將unicode字符串轉換爲字節字符串

如何將其轉換無需更改?

到目前爲止,我最好猜的是s.encode('unicode_escape'),它將返回'\\xd0\\xbc\\xd0\\xb0\\xd1\\x80\\xd0\\xba\\xd0\\xb0'並處理每5個字符,以使'\ xd0'變成一個字符,表示爲'\ xd0'。

回答

22

ISO 8859-1(又名Latin-1)將前256個Unicode碼位映射到它們的字節值。

>>> u'\xd0\xbc\xd0\xb0\xd1\x80\xd0\xba\xd0\xb0'.encode('latin-1') 
'\xd0\xbc\xd0\xb0\xd1\x80\xd0\xba\xd0\xb0' 
+1

這很聰明。我的第一個選擇是'字節(地圖(ord,x))',但它可能會慢得多...... – JBernardo

+0

證實這會產生所需的結果 – bryce

+0

@JBernardo只適用於python 3;從文本中不清楚,但可能性是OP在python 2. – zwol