Oui, bref, j'aimerais savoir pourquoi je vois un u devant mes clés et mes valeurs.
Je suis en train de rendre un formulaire. Le formulaire a une case à cocher pour l'étiquette particulière et un champ de texte pour l'adresse IP. Je crée un dictionnaire dont les clés sont l’étiquette et qui sont codées en dur dans list_key. Les valeurs du dictionnaire sont extraites du formulaire de saisie (list_value). Le dictionnaire est créé mais il est précédé de u pour certaines valeurs. Voici l'exemple de sortie pour le dictionnaire:
{u'1': {'broadcast': u'on', 'arp': '', 'webserver': '', 'ipaddr': u'', 'dns': ''}}
quelqu'un peut-il s'il vous plaît expliquer ce que je fais mal. Je ne reçois pas l'erreur quand je simule une méthode similaire dans pyscripter. Toutes les suggestions pour améliorer le code sont les bienvenues. Je vous remercie
#!/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)
Le "u" devant les valeurs de chaîne signifie que la chaîne a été représentée en tant qu'unicode. Les lettres précédant les chaînes sont appelées "Déclarations de codage de chaîne". Unicode est un moyen de représenter plus de caractères que l'ASCII normal ne peut en gérer.
Vous pouvez convertir une chaîne en unicode de plusieurs manières:
>>> u'foo'
u'foo'
>>> unicode('foo')
u'foo'
Mais la vraie raison est de représenter quelque chose comme ceci ( traduction ici ):
>>> 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
Ознакомьтесь с документацией
Dans la plupart des cas, vous ne devriez pas avoir d'erreur dans leur traitement différent de celui des chaînes ascii dans ce code.
Vous verrez d'autres symboles, tels que le symbole "brut" pour indiquer à une chaîne de ne pas interpréter de caractères spéciaux. Ceci est extrêmement utile lorsque vous effectuez une expression régulière en python.
>>> 'foo\"'
'foo"'
>>> r'foo\"'
'foo\\"'
Les chaînes ASCII et Unicode peuvent être logiquement équivalentes:
>>> bird1 = unicode('unladen swallow')
>>> bird2 = 'unladen swallow'
>>> bird1 == bird2
True
Ceci est une fonctionnalité, pas un bug.
Voir http://docs.python.org/howto/unicode.html , plus précisément la section "type Unicode".