मैं यह समझने की कोशिश करने में बहुत थक गया हूं कि यह कोड पाइथन 2 में क्यों काम करता है और पायथन 3 में नहीं। मैं बस जेसन का एक पृष्ठ पकड़ने की कोशिश कर रहा हूं और फिर पार्स यह।पायथन 2 बनाम पायथन 3 - urllib प्रारूप
import urllib, json
response = urllib.urlopen("http://reddit.com/.json")
content = response.read()
data = json.loads(content)
मैं सोचा अजगर 3 में बराबर कोड इस होगा:: यहाँ अजगर 2 में कोड है
import urllib.request, json
response = urllib.request.urlopen("http://reddit.com/.json")
content = response.read()
data = json.loads(content)
लेकिन यह, मेरे चेहरे में चल रही है क्योंकि डेटा पढ़ने द्वारा दिया () एक "बाइट्स" प्रकार है। हालांकि, मैं अपने जीवन के लिए ऐसा कुछ नहीं कर सकता जो कि जेसन पार्स करने में सक्षम हो। मैं हेडर कि reddit utf-8 मेरे पास वापस भेजने की कोशिश कर रहा है से पता है, लेकिन मैं बाइट्स utf-8 में डिकोड करने के लिए प्राप्त करने के लिए प्रतीत नहीं कर सकते हैं:
import urllib.request, json
response = urllib.request.urlopen("http://reddit.com/.json")
content = response.read()
data = json.loads(content.decode("utf8"))
क्या मैं गलत कर रहा हूँ?
संपादित करें: समस्या यह है कि मैं डेटा को उपयोग करने योग्य स्थिति में नहीं प्राप्त कर सकता; भले ही जेसन डेटा लोड करता है, इसका हिस्सा अवांछित है, और मैं स्क्रीन पर डेटा प्रिंट करने में सक्षम होना चाहता हूं।
दूसरा संपादन: समस्या को पार्सिंग की तुलना में प्रिंट के साथ और अधिक करना है, ऐसा लगता है। एलेक्स का जवाब आईओएफ को आईटीएफ 8 पर सेट करके, स्क्रिप्ट के लिए पाइथन 3 में काम करने का एक तरीका प्रदान करता है। लेकिन एक सवाल अभी भी बना हुआ है: कोड यह है कि कोड पायथन 2 में क्यों काम करता है, लेकिन पायथन 3 नहीं?
ओह, मैं कोड गलतियों को ठीक कर दूंगा ... मैंने इसे प्रदर्शन के लिए सुधारने की कोशिश की लेकिन प्रक्रिया में इसे सबकुछ खराब कर दिया। : पी भले ही, मैं इसे पार्स करने के बाद डेटा को नहीं देख सकता (एक साधारण "प्रिंट (डेटा)" का उपयोग करके) क्योंकि यह मुझे आकर्षक त्रुटियां देता है। –
@ डैनियल, समस्याएं _after_ आपको डेटा प्राप्त करने के बारे में डेटा से प्राप्त एक अलग सवाल प्रतीत होता है (जो मेरा जवाब, ऐसा प्रतीत होता है, जवाब दिया - हालांकि प्रतीत होता है कि आप सहमत नहीं हैं, क्योंकि आपने नहीं किया है ' टी भी इसे ऊपर उठाओ!)। यदि 'डेटा' से आपका मतलब है 'json.loads (प्रतिक्रिया)', तो मैं बिना किसी समस्या के इसे प्रिंट कर सकता हूं (मेरे मैक टर्मिनल.एप पर, जो यूटीएफ -8 का समर्थन करता है)। आपका sys.stdout.encoding क्या है? क्या आपने पाइथन 3 शुरू करने से पहले पर्यावरण चर 'PYTHONIOENCODING: एन्कोडिंग [: त्रुटियों] stdin/stdout/stderr' के लिए ठीक से सेट किया है? आदि, आदि - पूरी तरह से अलग मुद्दों, देखें। –
क्षमा करें अगर मैं पहले अस्पष्ट था। मूल समस्या यह है कि मैं * पार्सिंग के बाद डेटा का उपयोग नहीं कर सकता, किसी भी कारण से (प्रिंट केवल इसकी शुरुआत है; अगर मैं इसे प्रिंट नहीं कर सकता, तो लाइन के नीचे कहीं भी मैं परेशानी में भागने जा रहा हूं डेटा पढ़ना)। मैं एन्कोडिंग की जांच करूंगा, यह कहने के लिए पर्याप्त है कि यह मेरी W7 मशीन पर काम नहीं करता है। –