На этом шаге мы рассмотрим средства работы со спецсимволами.
В языке HTML некоторые символы являются специальными - например, знаки "меньше" (<) и "больше" (>), кавычки и др. Для отображения специальных символов служат так называемые HTML-эквиваленты. При этом знак "меньше" заменяется последовательностью <, а знак "больше"- >. Манипулировать HTML-эквивалентами позволяют следующие функции из модуля xml.sax.saxutils:
>>> from xml.sax.saxutils import escape >>> s = """&<>" """ >>> escape (s) '&<>" ' >>> escape(s, { " ' " : """, " ": " " } ) '&<>" '
>>> from xml.sax.saxutils import quoteattr >>> print(quoteattr("""&<>" """)) '&<>" ' >>> print(quoteattr("""&<>"'""")) "&<>"'" >>> print(quoteattr("""&<>" """, {'"' : """ } )) "&<>" "
>>> from xml.sax.saxutils import unescape >>> s = '&<>" ' >>> unescape(s) '&<>" ' >>> unescape (s, { """: '"', " ": " " } ) '& < > " '
Для замены символов <, > и & HTML-эквивалентами также можно воспользоваться функцией escape (<Строка>[, <Флаг>]) из модуля html. Если во втором параметре указано значение False, двойные кавычки и апострофы не будут заменяться HTML-эквивалентами. А функция unescape (<Строка>), объявленная в том же модуле и поддерживаемая, начиная с Python 3.4, выполняет обратную операцию - замену HTML-эквивалентов соответствующими им символами.
>>> import html >>> html.escape ("""&<>"' """) '&<>"'' >>> html.escape ("""&<>"' """, False) '&<>"\' ' >>> html.unescape ('&<>"' ') '&<>"\' ' >>> html.unescape ('&<>"\' ') '&<>"\' '
На следующем шаге мы рассмотрим обмен данными по протоколу HTTP.