मैं इस शर्मनाक आसान लग रहा है, और मुझे लगता है कि समस्या मैं सिर्फ यह सब बाइट्स-str-यूनिकोड की स्पष्ट समझ की जरूरत नहीं है कि है (और एन्कोडिंग-डिकोडिंग, स्पष्ट रूप से बोलते हुए) सामान अभी तक।डिकोड base64 स्ट्रिंग अजगर 3 में (lxml साथ हो या नहीं)
मैं अपने काम कोड को पायथन 3 पर चलाने की कोशिश कर रहा हूं। जिस भाग में मैं फंस गया हूं वह है जब मैं lxml
के साथ एक एक्सएमएल पार्स करता हूं और उस एक्सएमएल में बेस 64 स्ट्रिंग को डीकोड करता हूं।
कोड अब निम्नलिखित तरीके से काम करता है:
मैं एक XPath क्वेरी '.../binary/text()'
साथ बाइनरी डेटा पुनः प्राप्त। यह एक-तत्व सूची बनाता है जिसमें lxml.etree._ElementUnicodeResult
ऑब्जेक्ट होता है।
decoded = source.decode('base64')
और अंत में
output = numpy.frombuffer(decoded)
हालांकि, अजगर 3 पर मैं
AttributeError: 'lxml.etree._ElementUnicodeResult' object has no attribute 'decode'
कह यह ऐसा नहीं है एक त्रुटि संदेश मिलता: तो फिर, अजगर 2 के साथ, मैं ऐसा करने में सक्षम था आश्चर्यजनक, क्योंकि lxml.etree._ElementUnicodeResult
str
का उप-वर्ग है।
एक और तरीका है
binary = tree.xpath('//binary')[0]
binary_string = binary.text
कि मूलतः एक ही होगा साथ उस में एक ही डेटा के साथ एक वास्तविक str
प्राप्त करने के लिए किया जाएगा। तो मैं इसे बेस 64 से डीकोड करने के लिए क्या करूं? मैं base64
मॉड्यूल को देखा है, लेकिन यह एक तर्क के रूप में एक bytes
वस्तु लेता है, और मैं जिस तरह से bytes
के रूप में पेश करने के लिए str
के बारे में सोच नहीं सकते, क्योंकि अगर मैं एक bytes
वस्तु का निर्माण करने की कोशिश करते हैं, अजगर एनकोड करने की कोशिश करेंगे स्ट्रिंग, जिसकी मुझे आवश्यकता नहीं है।
आगे Googling, मैं (जो वैसे भी base64
से परोक्ष रूप से उत्पन्न होता है, अगर मैं गलत नहीं हूँ) binascii
मॉड्यूल भर में आया था, लेकिन मेरे स्ट्रिंग पर binascii.b2a_base64()
बुला
TypeError: 'str' does not support the buffer interface
पी एस का उत्पादन मुझे how to decode a hex string in Python 3 पर एक उत्तर प्रश्न भी मिला है, लेकिन यह एक समर्पित विधि bytes.fromhex()
के साथ किया गया है, इसलिए मुझे नहीं लगता कि यह कैसे सहायक होगा।
क्या कोई मुझे बता सकता है कि मुझे क्या याद आ रही है? मुझे डर है कि अधिकांश पोस्ट अप्रासंगिक है और केवल मेरी शर्मिंदगी को बढ़ा देती है, लेकिन कम से कम आप लोग what I tried जानते हैं।
पर एक
unicode
वस्तु वापस आ जाएगी एक के रूप में, नेड Batchelder इस बाइट्स-str-यूनिकोड सामान पर एक महान प्रस्तुति है: [व्यावहारिक यूनिकोड, या: मैं दर्द को कैसे रोकूं?] (Http://nedbatchelder.com/text/unipain.html) – delnanधन्यवाद @ डेलनान, मैं आधे रास्ते से हूं और वास्तव में बहुत पहले से मदद करता हूं :) –