不平衡括号正则表达式
unbalanced parenthesis regex
!pip install emot
from emot.emo_unicode import EMOTICONS_EMO
def convert_emoticons(text):
for emot in EMOTICONS_EMO:
text = re.sub(u'\('+emot+'\)', "_".join(EMOTICONS_EMO[emot].replace(",","").split()), text)
return text
text = "Hello :-) :-)"
convert_emoticons(text)
我正在尝试 运行 在 google collab 中使用上述代码,但出现以下错误:unbalanced parenthesis at position 4
我对 re 模块 documentation 的理解表明 '\(any_expression'\)'
是正确的使用方法,但我仍然遇到错误。所以,我已经尝试将 '\(' + emot + '\)
替换为:
'(' + emot + ')'
,它给出了同样的错误
'[' + emot + ']'
,它给出以下输出:Hello Happy_face_or_smiley-Happy_face_or_smiley Happy_face_or_smiley-Happy_face_or_smiley
text = "Hello :-) :-)"
的正确输出应该是 Hello Happy_face_smiley Happy_face_smiley
有人可以帮我解决这个问题吗?
使用正则表达式非常棘手,因为您首先需要转义表情符号中包含的正则表达式中的元字符,例如:)
和 :(
,这就是你得到不平衡括号的原因。所以,你需要先做这样的事情:
>>> print(re.sub(r'([()...])', r'%s' % '\\', ':)'))
:\)
但我建议您直接进行替换,因为您已经有了一个要遍历它的映射。所以我们有:
from emot.emo_unicode import EMOTICONS_EMO
def convert_emoticons(text):
for emot in EMOTICONS_EMO:
text = text.replace(emot, EMOTICONS_EMO[emot].replace(" ","_"))
return text
text = "Hello :-) :-)"
convert_emoticons(text)
# 'Hello Happy_face_smiley Happy_face_smiley'
!pip install emot
from emot.emo_unicode import EMOTICONS_EMO
def convert_emoticons(text):
for emot in EMOTICONS_EMO:
text = re.sub(u'\('+emot+'\)', "_".join(EMOTICONS_EMO[emot].replace(",","").split()), text)
return text
text = "Hello :-) :-)"
convert_emoticons(text)
我正在尝试 运行 在 google collab 中使用上述代码,但出现以下错误:unbalanced parenthesis at position 4
我对 re 模块 documentation 的理解表明 '\(any_expression'\)'
是正确的使用方法,但我仍然遇到错误。所以,我已经尝试将 '\(' + emot + '\)
替换为:
'(' + emot + ')'
,它给出了同样的错误'[' + emot + ']'
,它给出以下输出:Hello Happy_face_or_smiley-Happy_face_or_smiley Happy_face_or_smiley-Happy_face_or_smiley
text = "Hello :-) :-)"
Hello Happy_face_smiley Happy_face_smiley
有人可以帮我解决这个问题吗?
使用正则表达式非常棘手,因为您首先需要转义表情符号中包含的正则表达式中的元字符,例如:)
和 :(
,这就是你得到不平衡括号的原因。所以,你需要先做这样的事情:
>>> print(re.sub(r'([()...])', r'%s' % '\\', ':)'))
:\)
但我建议您直接进行替换,因为您已经有了一个要遍历它的映射。所以我们有:
from emot.emo_unicode import EMOTICONS_EMO
def convert_emoticons(text):
for emot in EMOTICONS_EMO:
text = text.replace(emot, EMOTICONS_EMO[emot].replace(" ","_"))
return text
text = "Hello :-) :-)"
convert_emoticons(text)
# 'Hello Happy_face_smiley Happy_face_smiley'