Em uma compilação UCS-2, o python usa 2 unidades de código internamente para cada caractere unicode no
\U0000ffff
ponto de código. As expressões regulares precisam funcionar com elas, então você precisa usar a seguinte expressão regular para corresponder a elas:highpoints = re.compile(u'[\uD800-\uDBFF][\uDC00-\uDFFF]')
Essa expressão regular corresponde a qualquer ponto de código codificado com um par substituto UTF-16 (consulte Pontos de código UTF-16 U+10000 a U+10FFFF .
Para tornar isso compatível com as versões Python UCS-2 e UCS-4, você pode usar um
try:
/except
usar um ou outro:try:
highpoints = re.compile(u'[\U00010000-\U0010ffff]')
except re.error:
# UCS-2 build
highpoints = re.compile(u'[\uD800-\uDBFF][\uDC00-\uDFFF]')
Demonstração em uma compilação python UCS-2:
>>> import re
>>> highpoints = re.compile(u'[\uD800-\uDBFF][\uDC00-\uDFFF]')
>>> example = u'Some example text with a sleepy face: \U0001f62a'
>>> highpoints.sub(u'', example)
u'Some example text with a sleepy face: '