【发布时间】:2017-11-28 16:16:27
【问题描述】:
工作环境Python版本:
Python 3.6.1
我已经在 StackOverflow 和互联网上的其他地方尝试了这里列出的一些方法 - 但我似乎仍然无法使其正常工作。
我可以有任何字符串...并且表情符号可能会或可能不会被空格包围,可能在 " 内或在主题标签等之后...无论如何,这些情况给我带来了一些麻烦。
这就是我所拥有的:
import sys
sys.maxunicode
emoji_pattern = re.compile("["
u"\U0001F600-\U0001F64F"
u"\U0001F300-\U0001F5FF"
u"\U0001F680-\U0001F6FF"
u"\U0001F1E0-\U0001F1FF"
"]+", flags=re.UNICODE)
text = "" #This could be any text with or without emojis
text = emoji_pattern.sub(r'', text)
然而,当显示或打印时,文本中仍有表情符号。
text是一个unicode字符串,即type(text)返回<type 'unicode'>
那么我错过了什么?我似乎还有表情符号。我还希望有一种方法可以反映将来可以扩展这些 Unicode 名称,因此我宁愿有一种方法可以保留所有常规字符。
将文本编码为'unicode_escape' 会得到以下结果:
b'[1/2] Can you see yourself as Prompto or Aranea?\\nGet higher quality images from our FB page \\n\\u2b07\\ufe0f\\u2026'
未格式化的原始文本为:
[1/2] Can you see yourself as Prompto or Aranea?
Get higher quality images from our FB page
⬇️…
【问题讨论】:
-
你确定你使用的是 Python 3 吗?在 Python 3 上,
type(text)应该返回str。 -
您的正则表达式似乎使用的是 UTF-16 代理项,而不是您要删除的字符的实际代码点。
-
@AlastairMcCormack 嗨,Alistair - 你是对的。我没有在正确的环境中 - 刚刚激活,我实际上得到了
<Class 'str'>...话虽如此,在 Python 3.6 环境中,我仍然返回带有表情符号的文本。 -
@user2357112 好的 - 刚刚快速检查了这一点,并修改为包含 sys.maxunicode 并将 emoji_pattern 更改为引用。
-
这是一个带有文字转义码的字节字符串。
.decode('unicode-escape')获取 Unicode 字符串。但是,这些字符不在您指定的范围内。我认为 Twitter 返回了 JSON,因此您可能需要查看json模块来处理它。