0
指定高Unicode代码点在Python 3.3我用正则表达式中的Unicode代码点的范围不麻烦:正则表达式 - 在Python
>>> import re
>>> to_delete = '[\u0020-\u0090\ufb00-\uffff]'
>>> s = 'abcdABCD¯˘¸ðﺉ﹅ffl你我他'
>>> print(s)
abcdABCD¯˘¸ðﺉ﹅ffl你我他
>>> print(re.sub(to_delete, '', s))
¯˘¸ð你我他
它的清洁和简单。但是,如果我有五个十六进制数字码点,也就是什么比\uffff
高,如\u1047f
,作为一个范围开头四个十六进制数字的一部分,我得到一个错误:
>>> to_delete = '[\u0020-\u0090\ufb00-\u1047f]'
>>> print(re.sub(to_delete, '', s))
...
sre_constants.error: bad character range
没有错误如果我开始一个新的五位数的范围,但我也没有得到预期的行为:
>>> to_delete = '[\u0020-\u0090\ufb00-\uffff\u10000-\u1047f]'
>>> print(re.sub(to_delete, '', s))
你我他
(符号是码点\u10000
,\u10308
和\u10192
,分别应在过去re.sub
操作被替换)
按照接受的答案的指示:
>>> to_delete = '[\u0020-\u0090\ufb00-\uffff\U00010000-\U0001047F]'
>>> print(re.sub(to_delete, '', s))
¯˘¸ð你我他
完美。傲慢的极端,但完美。