2015-07-31 14 views
5

Próbuję sprawdzić, czy ciąg znaków w python zawiera znaki zbiegów. Najprostszym sposobem, aby to zrobić, to ustawić listę uciekły znaków, a następnie sprawdzić, czy każdy element na liście jest w ciągu:Sprawdzanie ciągu znaków Pythona dla znaków ze znakami escape

s = "A & B" 
escaped_chars = ["&", 
    """, 
    "'", 
    ">"] 

for char in escaped_chars: 
    if char in s: 
     print "escape char '{0}' found in string '{1}'".format(char, s) 

Czy istnieje lepszy sposób to zrobić?

+1

Dlaczego pytasz o lepszy sposób? Co jest nie tak z twoją obecną metodą? Brzydki? Zły występ? Proszę zadać konkretne pytania. –

+2

Ponieważ istnieje wiele innych escaped_chars, których nie uwzględniłem, takich jak '<', itp. – Andrew

Odpowiedz

6

Można użyć regular expression (patrz także re module documentation):

>>> s = "A &amp; B" 
>>> import re 
>>> matched = re.search(r'&\w+;', s) 
>>> if matched: 
...  print "escape char '{0}' found in string '{1}'".format(matched.group(), s) 
... 
escape char '&amp;' found in string 'A &amp; B' 
  • &, ; mecze &, ; dosłownie.
  • \w dopasowuje znak słowny (alfabet, cyfry, _).
  • \w+ dopasowuje jeden lub więcej znaków słownych.
+4

Niesamowita odpowiedź :) – The6thSense

Powiązane problemy