Source code for openpyxl.utils.escape

# Copyright (c) 2010-2024 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{:0>4x}_".format(ord(match.group(0))) 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