2017-07-17 18 views
0

Ich muss einige Sonderzeichen aus Benutzereingaben für andere Plattform (z. B. Linux und Windows) mit Python ersetzen. Ich erkläre meinen Code unten.Wie einige Sonderzeichen aus Benutzereingaben für verschiedene Python-Plattformen ersetzen

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

Hier bekomme ich die Benutzereingabe per Post-Methode. Ich muss die folgenden Zeichen aus der Benutzereingabe entfernen (falls es welche gibt).

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

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

Die Sonderzeichen sind oben angegeben. Hier muss ich für Linux und Windows entfernen.

Antwort

0

Python-Strings haben eine eingebaute Methode translate zum Ersetzen/Löschen von Zeichen. Sie müssen eine Übersetzungstabelle erstellen und dann die Funktion aufrufen.

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)) 

Wird Lorem ipsum dolor sit amet consectetur ad drucken.

Wenn Sie ein Ersatzzeichen anstelle des Löschens verwenden möchten, ersetzen Sie None oben durch das Zeichen. Sie können eine Übersetzungstabelle mit spezifischen Substitutionen bauen, `{ "a": "m", "b": "n", ...}

Edit: Das Skript ist in der Tat in Python3. In Python2 (TiO) es ist 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' 

Bitte beachte, dass ich mit ' ersetzt haben und in ähnlicher Weise mit " ersetzt, weil ich Sie denken, sind nur mit ASCII-Strings zu tun.

+0

Es wirft einen Fehler. 'SyntaxError: Nicht-ASCII-Zeichen '\ xe2' in Datei system.py in Zeile 13, aber keine Codierung deklariert; Einzelheiten finden Sie unter http://www.python.org/peps/pep-0263.html. Eigentlich kommt dieser 'if'-Win in sys.platform:' line error. – satya

+0

wieder siehe diese Zeile 'type object 'str' hat kein Attribut 'maketrans''. Es kommt auch. – satya

+1

Ich benutze 'Python 2.7' Ich denke, das ist der Code für python3. – satya

Verwandte Themen