2012-06-24 241 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