我在Mac上使用Python 2.7.10。表情符号中的旗帜由一对区域指示符号表示。我想编写一个Python正则表达式,在一串表情符号旗帜之间插入空格。
例如,这个字符串是两个巴西国旗: u"\U0001F1E7\U0001F1F7\U0001F1E7\U0001F1F7"
它会呈现为:
我想在任何一对区域指示符号之间插入空格。类似于这样:
这将导致:
例如,这个字符串是两个巴西国旗: u"\U0001F1E7\U0001F1F7\U0001F1E7\U0001F1F7"
它会呈现为:
我想在任何一对区域指示符号之间插入空格。类似于这样:
re.sub(re.compile(u"([\U0001F1E6-\U0001F1FF][\U0001F1E6-\U0001F1FF])"),
r"\1 ",
u"\U0001F1E7\U0001F1F7\U0001F1E7\U0001F1F7")
...这将导致:
u"\U0001F1E7\U0001F1F7 \U0001F1E7\U0001F1F7 "
...但是那段代码给了我一个错误:
sre_constants.error: bad character range
我认为这是出错的提示,以下内容显示\U0001F1E7在正则表达式中被分成了两个“字符”:
re.search(re.compile(u"([\U0001F1E7])"),
u"\U0001F1E7\U0001F1F7\U0001F1E7\U0001F1F7").group(0)
这将导致:
u'\ud83c'
很遗憾,我的Unicode理解能力还不足以让我继续深入了解。
sys.maxunicode
大于等于1114111(宽字符编码),而不是65535(窄字符编码)。请参阅Python中的Unicode - 只有UTF-16吗?。 - smci