HTTP

2009-04-23 12 views
15

से यूनिस्केप पायथन स्ट्रिंग्स मुझे एक HTTP शीर्षलेख से एक स्ट्रिंग मिली है, लेकिन यह बच निकला है .. मैं इसे अनदेखा करने के लिए किस फ़ंक्शन का उपयोग कर सकता हूं?HTTP

myemail%40gmail.com -> [email protected] 

क्या urllib.unquote() जाने का रास्ता होगा?

उत्तर

34

मुझे पूरा यकीन है कि urllib का unquote ऐसा करने का आम तरीका है।

>>> import urllib 
>>> urllib.unquote("myemail%40gmail.com") 
'[email protected]' 

वहाँ भी unquote_plus है:

गंदें शब्द बोलना जैसा

(), लेकिन यह भी रूप में HTML प्रपत्र मूल्यों unquoting के लिए आवश्यक की रिक्ति द्वारा धन चिह्न बदल देता है।

+1

के, बस यह सुनिश्चित करना चाहता था .. मुझे नौकरी करने के लिए प्रतीत होता है कि एक समारोह का उपयोग करने से नफरत है, लेकिन केवल कुछ उदाहरणों के साथ काम कर रहा है जो मैंने किया और असली दुनिया के युद्धों के साथ तोड़ दिया। हे। फिर समस्या को ट्रैक करना असंभव हो जाता है ..: पी – Ian

1

पायथन 3 में, ये फ़ंक्शन urllib.parse.unquote और urllib.parse.unquote_plus हैं।

बाद HTTP URL को में क्वेरी स्ट्रिंग, जहां अंतरिक्ष वर्ण () पारंपरिक रूप से अधिक चरित्र (+) के रूप में इनकोड के लिए उदाहरण के लिए प्रयोग किया जाता है, और + प्रतिशत-एन्कोड %2B है।

इसके अलावा unquote_to_bytes है जो दिए गए एन्कोडेड स्ट्रिंग को bytes में परिवर्तित करता है, जिसका उपयोग एन्कोडिंग ज्ञात नहीं होने पर किया जा सकता है या एन्कोडेड डेटा बाइनरी डेटा होता है। हालांकि वहाँ कोई unquote_plus_to_bytes है, यदि आप इसे ज़रूरत है, आप कर सकते हैं: कि क्या उपयोग करने के लिए unquote या unquote_plusURL encoding the space character: + or %20 पर उपलब्ध है पर

def unquote_plus_to_bytes(s): 
    if isinstance(s, bytes): 
     s = s.replace(b'+', b' ') 
    else: 
     s = s.replace('+', ' ') 
    return unquote_to_bytes(s) 

में अधिक जानकारी।