string值前的'u'符号是什么意思?
是的,总之我想知道为什么我在我的钥匙和价值观前面看到au。
我正在渲染一个表单。 该表格具有特定标签的checkbox和IP地址的一个文本字段。 我正在创build一个字典,键是在list_key中硬编码的标签,并且字典的值是从表单input(list_value)中获取的。 字典是创build的,但是它的前面是一些值。 这里是字典的输出示例:
{u'1': {'broadcast': u'on', 'arp': '', 'webserver': '', 'ipaddr': u'', 'dns': ''}}
有人可以请解释我做错了什么。 当我在pyscripter中模拟类似的方法时,我没有得到错误。 任何改善代码的build议都是值得欢迎的。 谢谢
#!/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)
string值前的“u”表示该string已被表示为unicode。 string之前的字母称为“string编码声明”。 Unicode是一种代表比正常情况下更多的字符的方法。
您可以将string转换为unicode多种方式:
>>> u'foo' u'foo' >>> unicode('foo') u'foo'
但真正的原因是代表这样的东西( 在这里翻译 ):
>>> 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 Ознакомьтесь с документацией
在大多数情况下,你不应该在这段代码中看到与ASCIIstring不同的错误。
还有其他的符号可以看到,例如告诉string不能解释任何特殊字符的“原始”符号。 在python中执行正则expression式时,这是非常有用的。
>>> 'foo\"' 'foo"' >>> r'foo\"' 'foo\\"'
ACSII和Unicodestring可以在逻辑上等效:
>>> bird1 = unicode('unladen swallow') >>> bird2 = 'unladen swallow' >>> bird1 == bird2 True
这是一个function,而不是一个错误。
请参阅http://docs.python.org/howto/unicode.html ,特别是“unicodetypes”部分。
- 在Python中,如何testing我是否在Google App Engine SDK中?
- 类JavaLaunchHelper在两个实现。 其中一个将被使用。 哪一个是未定义的
- Google App Engine和Google Compute Engine有什么区别?
- 为什么在Google App Engine上使用Django?
- 谷歌Go的资源使用与Appengine上的Python和Java
- 用Python读App Engine上的文件?
- 无法从本地App Engine开发服务器访问BigQuery
- 如何删除Google App Engine中的所有数据存储?
- Linux SDK升级后的“ImportError:No module named webapp2”(1.9.35 – > 1.9.38)