我使用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
هيلاريكلينتون“متنحة”وتشيرإلىعمليةغشفيولايةبانسيلفانياالعتيقةقائلة:“عندفرزالاصوات..قطعواالكهربا✋”#ابو_الياس
输出
هيلاريكلينتون“متنحة”وتشيرإلىعمليةغشفيولايةبانسيلفانياالعتيقةقائلة:“عندفرزالاصوات..قطعواالكهربا✋”#ابو_الياس
答案 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'))
时,结果看起来很不错。