2012-06-24 16 views
10

मुझे u'\xd0\xbc\xd0\xb0\xd1\x80\xd0\xba\xd0\xb0' जैसे किसी फ़ंक्शन से स्ट्रिंग मिलती है, लेकिन इसे संसाधित करने के लिए मुझे इसे बाइटस्ट्रिंग (जैसे '\xd0\xbc\xd0\xb0\xd1\x80\xd0\xba\xd0\xb0') की आवश्यकता होती है।यूनिकोड स्ट्रिंग को बाइट स्ट्रिंग में कनवर्ट करें

मैं इसे बिना बदलाव किए कैसे परिवर्तित करूं?

मेरा सबसे अच्छा अनुमान अब तक s.encode('unicode_escape') लेना है, जो '\\xd0\\xbc\\xd0\\xb0\\xd1\\x80\\xd0\\xba\\xd0\\xb0' वापस करेगा और प्रत्येक 5 वर्णों को संसाधित करेगा ताकि '\ xd0' एक वर्ण '\ xd0' के रूप में प्रदर्शित हो।

उत्तर

22

आईएसओ 885 9 -1 (उर्फ लैटिन -1) अपने बाइट मूल्यों में पहले 256 यूनिकोड कोडपॉइंट्स को मानचित्र करता है।

>>> 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 उत्पन्न करता है जो केवल पायथन 3 में काम करता है; यह पाठ से स्पष्ट नहीं है, लेकिन बाधाएं ओपी पाइथन 2 पर हैं। – zwol

संबंधित मुद्दे