regex - Byte error in regexp -
तो, यहां कोड है:
#! / Usr / bin / python sys से आयात निकास आयात urllib.request answer = urllib.request.urlopen ("http://monip.org") .read () def डीबग (txt): प्रिंट (txt) बाहर निकलें (0) def parse_answer (उत्तर): '' अनुरोध के एचटीएमएल परिणाम को पार्स करने के लिए 'सिंपल फंक्शन' में आईपी को खोजने के लिए। रनटाइम उठाएं यदि परिणाम में कोई आईपी और आईपी अन्य नहीं। '' 'पुनः आयात करें पैटर्न = "^ \ w + (\ d {1,3} \। \ D {1,3} \। \ D {1,3} \। \ D {1,3}) \ w + $ "Regexp = re.compile (pattern) अगर regexp.match (regexp, उत्तर): m = regexp.search (regexp, answer) ip = m.group (0) आईपी आइए वापसी: रनटाइम बढ़ाएं कोशिश: ip = parse_answer (उत्तर ) RuntimeError को छोड़कर: प्रिंट ("त्रुटि, अपने नेटवर्क कॉन्फ़िगरेशन की जांच करें") प्रिंट ("निरस्त करना ..") बाहर निकलें (1) प्रिंट ("आईपी:", आईपी)
मैंने लिखा था उस। यह कोड आपको अपना सार्वजनिक आईपी एड्रेस देना है।
ट्रेसबैक (सबसे हाल ही में कॉल अंतिम): फ़ाइल "./ippub", पंक्ति से यह एक रनटाइम त्रुटि फेंकता है अगर यह आपको कुछ भी नहीं दे सकता।
27, आईपी में = parse_answer (उत्तर) फ़ाइल "./ippub", पंक्ति 1 9, parse_answer में अगर regexp.match (regexp, उत्तर): प्रकार त्रुटि: 'बाइट्स' ऑब्जेक्ट को पूर्णांक के रूप में व्याख्या नहीं किया जा सकता
इसका अर्थ है "उत्तर" चर बाइट्स है, लेकिन मैं इसमें एक आईपी पते से मेल करना चाहता हूं, और मैं अजगर प्रकार की प्रणाली के कारण नहीं कर सकता: -)
कोई भी विचार? बहुत धन्यवाद!
आपकी दो अलग समस्याएं हैं।
-
आपको
उत्तर
को किसी स्ट्रिंग में कनवर्ट करना होगा, भले हीउत्तर
के पास कुछ अजीब अक्षर हैं जो किutf-8
के साथ अच्छी तरह डीकोड नहीं करते हैं। -
आप नियमित अभिव्यक्ति एपीआई गलत तरीके से लागू कर रहे हैं।
यहां एक सही संस्करण है, जो chr समस्या 1 के आसपास काम करने के लिए और सही वाक्यविन्यास के साथ समस्या 2 को हल करता है। >
#! / Usr / bin / python sys आयात से बाहर निकलें आयात urllib.request आयात डीईएफ़ डिबग (txt) : प्रिंट (txt) बाहर निकलें (0) def parse_answer (उत्तर): '' 'अनुरोध के एचटीएमएल परिणाम को पार्स करने के लिए' सरल 'समारोह में आईपी को खोजने के लिए रनटाइम उठाएं यदि परिणाम में कोई आईपी और आईपी अन्य नहीं। '' 'Answer = "" .join (उत्तर में x के लिए [chr (x)) पैटर्न = "(\ d {1,3} \। \ D {1,3} \। \ D {1,3} \। \ D {1,3}) "regexp = re.compile (pattern) m = regexp.search (उत्तर) अगर m: ip = m.group (0) वापस आईपी आइए: रनटाइम एंटर उत्तर = urllib.request बढ़ाएं। Urlopen ("http://monip.org") .read () कोशिश: RuntimeError को छोड़कर ip = parse_answer (उत्तर): प्रिंट ("त्रुटि, अपने नेटवर्क कॉन्फ़िगरेशन की जांच करें।") प्रिंट ("aborting ..") exit (1 ) प्रिंट ("आईपी:", आईपी)
Comments
Post a Comment