环绕空间的表情符号

时间:2016-12-05 17:23:15

标签: python regex python-2.x emoji

我使用this post创建了一个正则表达式,可以在一串文本中找到表情符号,并且只是在两边粘贴一些空格字符。我的正则表达式代码:

try:
    # Wide UCS-4 build
    oRes = re.compile(u'['
        u'\U0001F300-\U0001F64F'
        u'\U0001F680-\U0001F6FF'
        u'\u2600-\u26FF\u2700-\u27BF]+', 
        re.UNICODE)
except re.error:
    # Narrow UCS-2 build
    oRes = re.compile(u'('
        u'\ud83c[\udf00-\udfff]|'
        u'\ud83d[\udc00-\ude4f\ude80-\udeff]|'
        u'[\u2600-\u26FF\u2700-\u27BF])+', 
        re.UNICODE)

s2 = oRE.sub(r'  \1  ', s1)

然而,我正在获得一些非常奇怪的行为,其中emojis被删除,如下例所示。任何意见,将不胜感激。我在MacBook上使用Python。感谢。

INPUT

هيلاريكلينتون“متنحة”وتشيرإلىعمليةغشفيولايةبانسيلفانياالعتيقةقائلة:“عندفرزالاصوات..قطعواالكهربا✋”#ابو_الياس

输出

هيلاريكلينتون“متنحة”وتشيرإلىعمليةغشفيولايةبانسيلفانياالعتيقةقائلة:“عندفرزالاصوات..قطعواالكهربا✋”#ابو_الياس

1 个答案:

答案 0 :(得分:1)

一旦我更正了正则表达式中圆括号的位置,以下内容适用于我。在counter = {} for val in lst: counter[val] = counter.get(val, 0) + 1 块中,如果要创建组try,则需要围绕整个事物使用圆括号;在\1区块中,圆括号需要包含 except,否则+组只会捕获多个相关字符中的第一个。

\1

至于角色的反转,这必须是输入/输出或复制/粘贴链中某些步骤的工件,而不是正确处理阿拉伯语的从右到左的性质。它对我来说并不会发生。当我在MacBook上的TextWrangler中打开import re with open('input.txt', 'rb') as f: s1 = f.read().decode('utf-8').strip() try: # Wide UCS-4 build oRes = re.compile(u'([' u'\U0001F300-\U0001F64F' u'\U0001F680-\U0001F6FF' u'\u2600-\u26FF\u2700-\u27BF]+)', re.UNICODE) except re.error: # Narrow UCS-2 build oRes = re.compile(u'((' u'\ud83c[\udf00-\udfff]|' u'\ud83d[\udc00-\ude4f\ude80-\udeff]|' u'[\u2600-\u26FF\u2700-\u27BF])+)', re.UNICODE) s2 = oRes.sub(r' \1 ', s1) with open('output.txt', 'wb') as f: f.write((s1+'\n').encode('utf-8')) f.write((s2+'\n').encode('utf-8')) 时,结果看起来很不错。