Source code for openpyxl.utils.escape

from __future__ import absolute_import
# Copyright (c) 2010-2017 openpyxl

"""
OOXML has non-standard escaping for characters < \031
"""

import re


[docs]def escape(value): r""" Convert ASCII < 31 to OOXML: \n == _x + hex(ord(\n)) +_ """ CHAR_REGEX = re.compile(r"[\001-\031]") def _sub(match): """ Callback to escape chars """ return "_x%04x_" % ord(match.group(0)) # py 2.6 return CHAR_REGEX.sub(_sub, value)
[docs]def unescape(value): r""" Convert escaped strings to ASCIII: _x000a_ == \n """ ESCAPED_REGEX = re.compile("_x([0-9A-Fa-f]{4})_") def _sub(match): """ Callback to unescape chars """ return chr(int(match.group(1), 16)) if "_x" in value: value = ESCAPED_REGEX.sub(_sub, value) return value