Вы не сможете распознать надлежащим образом декодированные коды кодировки unicode таким образом (как строки, содержащие \uXXXX
и т. Д.). Правильно декодированные, к тому времени, когда парсер регулярных выражений попадает к ним, каждый символ *.
В зависимости от того, был ли ваш питон скомпилирован только с 16-битными юникода кодовых точек или нет, вы хотите что-то вроде рисунка либо:
# 16-bit codepoints
re_strip = re.compile(u'[\uD800-\uDBFF][\uDC00-\uDFFF]')
# 32-bit* codepoints
re_strip = re.compile(u'[\U00010000-\U0010FFFF]')
И ваш код будет выглядеть следующим образом:
import re
# Pick a pattern, adjust as necessary
#re_strip = re.compile(u'[\uD800-\uDBFF][\uDC00-\uDFFF]')
re_strip = re.compile(u'[\U00010000-\U0010FFFF]')
content= u'[\u86cb\u767d12\U0001f633\uff0c\u4f53\u6e29\u65e9\u6668\u6b63\u5e38\uff0c\u5348\u540e\u665a\u95f4\u53d1\u70ed\uff0c\u6211\u73b0\u5728\u8be5\u548b\U0001f633]'
print(content)
stripped = re_strip.sub('', content)
print(stripped)
Оба выражения, уменьшить количество символов в строке stripped
до 26.
Этих выражений вырезать смайлики вы были после того, как, бу t может также вычеркнуть другие вещи, которые вы сделать хотите. Возможно, стоит просмотреть список диапазонов кодовых ссылок в формате unicode (например, here) и настроить их.
Вы можете определить, является ли ваш питон установить будет распознавать только 16-разрядные кодовые, делая что-то вроде:
import sys
print(sys.maxunicode.bit_length())
Если это отображает 16, вам нужно первое выражение регулярных выражений. Если он отображает что-то большее, чем 16 (для меня это говорит 21), второй - это то, что вы хотите.
Ни одно выражение не будет работать при использовании на установке python с неправильным sys.maxunicode
.
См. Также: this связанные.
спасибо. Оно работает. Но вы говорите, что это может также лишить других вещей, которые я хочу. Так что, если я только хочу удалить эможи? Содержимое может содержать китайские символы, цифры, буквы, пунктуации и эможи. BTW, мой python скомпилирован только с 16-разрядными кодами Unicode. – sophiaCY
Ну, это * может *. Кодовые страницы, которые я «фильтрую», начинаются с 10000 [здесь] (http://jrgraphix.net/research/unicode_blocks.php). Итак, что-нибудь в «Линейной B Syllabary» через «Теги». По моему опыту, большинство шрифтов даже не имеют глифов для этих кодовых страниц. Так что (очень) маловероятно, что все, что вы * * хотите, находится в этом диапазоне, поэтому фильтрация, вероятно, прекрасна, но это просто то, о чем нужно знать. – jedwards