2017-07-17 1 views
0

Je dois remplacer certains caractères spéciaux de l'entrée utilisateur pour une plate-forme différente (Linux et Windows) en utilisant Python. J'explique mon code ci-dessous.Comment remplacer certains caractères spéciaux de l'entrée utilisateur pour différentes plates-formes Python

if request.method == 'POST': 
     rname1 = request.POST.get('react') 

Ici, je reçois l'entrée de l'utilisateur par la méthode post. J'ai besoin des caractères suivants pour supprimer de l'entrée de l'utilisateur (s'il y en a).

1- Escape or filter special characters for windows, () < > * ‘ = ? ; [ ]^~ ! . ” % @/\ : + , ` 

2- Escape or filter special characters for Linux, { } () < > * ‘ = ? ; [ ] $ – # ~ ! . ” %/\ : + , ` 

Les caractères spéciaux sont indiqués ci-dessus. Ici, je dois supprimer pour Linux et Windows.

Répondre

0

Les chaînes Python ont une méthode intégrée translate pour la substitution/suppression de caractères. Vous devez créer une table de traduction, puis appeler la fonction.

import sys 
if "win" in sys.platform: 
    special = """() < > * ‘ = ? ; [ ]^~ ! . ” % @/\ : + , `""".split() 
else: 
    special = """{ } () < > * ‘ = ? ; [ ] $ – # ~ ! . ” %/\ : + , `""".split() 

trans_dict = {character: None for character in special} 
trans_table = str.maketrans(trans_dict) 
print("Lo+=r?e~~m ipsum dol;or sit!! amet, consectet..ur ad%".translate(trans_table)) 

Imprime Lorem ipsum dolor sit amet consectetur ad.

Si vous souhaitez utiliser un caractère de remplacement au lieu de supprimer, remplacez le None ci-dessus par le caractère. Vous pouvez construire une table de traduction avec des substitutions spécifiques, `{" a ":" m "," b ":" n ", ...}

Modifier: L'extrait ci-dessus est en effet dans Python3. Dans python2 (TiO), il est easier to delete characters:

>>> import sys 
>>> import string 
>>> if "win" in sys.platform: 
... special = """()<>*'=?;[]^~!%@/\:=,`""" 
... else: 
... special = """{}()<>*'=?;[]$-#~!."%/\:+""" 
... 
>>> s = "Lo+r?e~~/\#<>m ips()u;m" 
>>> string.translate(s, None, special) 
'Lorem ipsum' 

Notez que j'ai substitué avec ' et de même remplacé avec " parce que je pense que vous ne traiter qu'avec des chaînes de caractères ASCII.

+0

Son jetant une erreur. 'SyntaxError: Caractère non-ASCII '\ xe2' dans le fichier system.py sur la ligne 13, mais pas d'encodage déclaré; voir http://www.python.org/peps/pep-0263.html pour plus de détails ». En fait, cette erreur "if" win "dans sys.platform:' line arrive. – satya

+0

voir à nouveau cette ligne 'type object 'str' n'a pas d'attribut 'maketrans'. C'est aussi à venir. – satya

+1

J'utilise 'python 2.7' Je pense que c'est le code pour python3. – satya