2012-07-01 11 views
88

हाँ संक्षेप में मैं जानना चाहता हूं कि मैं आपकी चाबियों और मूल्यों के सामने आपको क्यों देख रहा हूं।'यू' प्रतीक स्ट्रिंग मानों के सामने क्या मतलब है?

मैं एक फॉर्म प्रस्तुत कर रहा हूं। इस फॉर्म में विशेष लेबल के लिए चेक-बॉक्स और आईपी पते के लिए एक टेक्स्ट फ़ील्ड है। मैं कुंजीपटल बना रहा हूं जिसमें चाबियाँ लेबल हैं जो list_key में हार्डकोड हैं और शब्दकोश इनपुट के लिए मान फॉर्म इनपुट (list_value) से लिया जाता है। शब्दकोश बनाया गया है लेकिन यह कुछ मूल्यों के लिए आपके द्वारा पहले किया गया है। यहां शब्दकोश के लिए नमूना आउटपुट है:

{u'1': {'broadcast': u'on', 'arp': '', 'webserver': '', 'ipaddr': u'', 'dns': ''}} 

कोई कृपया बता सकता है कि मैं क्या गलत कर रहा हूं। जब मैं pyscripter में समान विधि अनुकरण करता हूं तो मुझे त्रुटि नहीं मिल रही है। कोड को बेहतर बनाने के लिए कोई सुझाव स्वागत है। धन्यवाद

#!/usr/bin/env python 

import webapp2 
import itertools 
import cgi 

form =""" 
    <form method="post"> 
    FIREWALL 
    <br><br> 
    <select name="profiles"> 
     <option value="1">profile 1</option> 
     <option value="2">profile 2</option> 
     <option value="3">profile 3</option> 
    </select> 
    <br><br> 
    Check the box to implement the particular policy 
    <br><br> 

    <label> Allow Broadcast 
     <input type="checkbox" name="broadcast"> 
    </label> 
    <br><br> 

    <label> Allow ARP 
     <input type="checkbox" name="arp"> 
    </label><br><br> 

    <label> Allow Web traffic from external address to internal webserver 
     <input type="checkbox" name="webserver"> 
    </label><br><br> 

    <label> Allow DNS 
     <input type="checkbox" name="dns"> 
    </label><br><br> 

    <label> Block particular Internet Protocol address 
     <input type="text" name="ipaddr"> 
    </label><br><br> 

    <input type="submit"> 
    </form> 
""" 
dictionarymain={} 

class MainHandler(webapp2.RequestHandler): 
    def get(self): 
     self.response.out.write(form) 

    def post(self): 
     # get the parameters from the form 
     profile = self.request.get('profiles') 

     broadcast = self.request.get('broadcast') 
     arp = self.request.get('arp') 
     webserver = self.request.get('webserver') 
     dns =self.request.get('dns') 
     ipaddr = self.request.get('ipaddr') 


     # Create a dictionary for the above parameters 
     list_value =[ broadcast , arp , webserver , dns, ipaddr ] 
     list_key =['broadcast' , 'arp' , 'webserver' , 'dns' , 'ipaddr' ] 

     #self.response.headers['Content-Type'] ='text/plain' 
     #self.response.out.write(profile) 

     # map two list to a dictionary using itertools 
     adict = dict(zip(list_key,list_value)) 
     self.response.headers['Content-Type'] ='text/plain' 
     self.response.out.write(adict) 

     if profile not in dictionarymain: 
      dictionarymain[profile]= {} 
     dictionarymain[profile]= adict 

     #self.response.headers['Content-Type'] ='text/plain' 
     #self.response.out.write(dictionarymain) 

     def escape_html(s): 
      return cgi.escape(s, quote =True) 



app = webapp2.WSGIApplication([('/', MainHandler)], 
           debug=True) 
+1

अपने वास्तविक सवाल "मैं अपने कुंजी और मूल्यों के सामने एक' u' क्यों दिखाई दे रहा "है? – jdi

+0

और आप कहीं भी नहीं दिखाते हैं कि आपको पहली जगह में कोई त्रुटि मिल रही है। – jdi

+3

ऐसा इसलिए है क्योंकि वे यूनिकोड स्ट्रिंग हैं: http://stackoverflow.com/questions/599625/python-string-prints-as-ustring – user

उत्तर

121

स्ट्रिंग मानों के सामने 'यू' का अर्थ है स्ट्रिंग को यूनिकोड के रूप में दर्शाया गया है। तारों से पहले पत्रों को "स्ट्रिंग एन्कोडिंग घोषणाएं" कहा जाता है। यूनिकोड सामान्य एसीआईआई प्रबंधन से अधिक पात्रों का प्रतिनिधित्व करने का एक तरीका है।

आप कई तरीके यूनिकोड के लिए एक स्ट्रिंग परिवर्तित कर सकते हैं:,

>>> val = u'Ознакомьтесь с документацией' 
>>> val 
u'\u041e\u0437\u043d\u0430\u043a\u043e\u043c\u044c\u0442\u0435\u0441\u044c \u0441 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0435\u0439' 
>>> print val 
Ознакомьтесь с документацией 

अधिकांश भाग के लिए आप shouldn ':

>>> u'foo' 
u'foo' 
>>> unicode('foo') 
u'foo' 

लेकिन असली कारण कुछ इस तरह (translation here) का प्रतिनिधित्व करने के लिए है इस कोड में एसिसी स्ट्रिंग से अलग इलाज में कोई त्रुटि नहीं है।

ऐसे अन्य प्रतीक हैं जिन्हें आप देखेंगे, जैसे "कच्चे" प्रतीक किसी स्ट्रिंग को बताने के लिए किसी विशेष वर्ण की व्याख्या नहीं करना। पायथन में नियमित अभिव्यक्ति करते समय यह बेहद उपयोगी है।

>>> 'foo\"' 
'foo"' 
>>> r'foo\"' 
'foo\\"' 

ACSII और यूनिकोड तार तार्किक बराबर हो सकते हैं:

>>> bird1 = unicode('unladen swallow') 
>>> bird2 = 'unladen swallow' 
>>> bird1 == bird2 
True 
+0

धन्यवाद .. इसे स्पष्ट करने के लिए समायोजित करें, मैं समझता हूं कि मैं नहीं समझूंगा यूनिकोड के रूप में प्रतिनिधित्व स्ट्रिंग के साथ शब्दकोश पर त्रुटि ऑपरेटिंग प्राप्त करें। – user1488987

+0

@ उपयोगकर्ता 1488987: सही। आप अपने निर्देश – jdi

+3

@jdi में यूनिकोड प्राप्त कर सकते हैं, महान उदाहरण स्ट्रिंग :)) –

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