У меня есть строка где специальные символы как '
или "
или &
(...) может появиться. В строке:
string = """ Hello "XYZ" this 'is' a test & so on """
как может я автоматически выходить из каждого специального символа, так, чтобы я получил это:
string = " Hello "XYZ" this 'is' a test & so on "
В Python 3.2 вы можете использовать функцию HTML.escape
, например,
>>> string = """ Hello "XYZ" this 'is' a test & so on """
>>> import html
>>> html.escape(string)
' Hello "XYZ" this 'is' a test & so on '
Для более ранних версий Python Check http://wiki.python.org/moin/escapinghtml :
Модуль
CGI
, который поставляется с Python, имеетEscape ()
функция :Импорт CGI s = cgi.escape ("" "& <>" "") # S = "& <>"
Однако он не избегает персонажей помимо
и
,<
и>
. Если он используется какCGI.ESCAPE (string_to_escape, quote = true)
, он также выходит.
Вот небольшой фрагмент, который позволит вам выпустить цитаты и апострофы :
HTML_ESCAPE_TABLE = { "&": "&", ««: »« », ««: «», ">": ">", "<": "<", } def html_escape (текст): "" "Производить объекты внутри текста". "" "" Возвращение "" .join (html_escape_table.get (c, c) для c в тексте)
Вы также можете использовать
escape ()
изXML.Sax.saxutils
, чтобы избежать HTML. Эта функция должна выполняться быстрее. ФункцияUnescape ()
функция одного и того же модуля может быть передана те же аргументы для декодирования строки.От XML.Sax.saxutils Импорт Escape, Unescape # Escape () и unescape () заботятся о &, <и>. html_escape_table = { ««: »« », ««: «» } html_unescape_table = {v: k для k, v в html_escape_table.items ()} def html_escape (текст): Возврат Escape (текст, HTML_ESCAPE_TABLE) def html_unescape (текст): Вернуть uneScape (текст, html_unescape_table)
Простая строковая функция сделает это:
def escape(t):
"""HTML-escape the text in `t`."""
return (t
.replace("&", "&").replace("<", "<").replace(">", ">")
.replace("'", "'").replace('"', """)
)
Другие ответы в этой теме имеют незначительные проблемы: метод CGI.ESCape по какой-то причине игнорирует односмысленные кавычки, и вам нужно явно спросить его делать двойные цитаты. Связанная страница Wiki делает все пять, но использует объект XML
, который не является HTML-объектом.
Эта функция кода все время делает все пять, используя HTML-стандартные объекты.
Метод CGI.ESCape метод преобразует специальные буквениры для действительных тегов HTML
import cgi
original_string = 'Hello "XYZ" this \'is\' a test & so on '
escaped_string = cgi.escape(original_string, True)
print original_string
print escaped_string
, приведут к
Hello "XYZ" this 'is' a test & so on
Hello "XYZ" this 'is' a test & so on
необязательному второму недвижимости на CGI.ESCape скинуть кавычки. По умолчанию они не сбежались